以浏览器 fetch 流实现网页事件源接口:自动重连、成批投递并按队列余量控速。
源码浏览已生成;不能解析的文件以纯文本展示,不表示通过类型检查。
# 网页事件源浏览器适配 `事件源。豫` 实现[网页事件源接口](../../../豫言操作系统接口/网页事件源/规范.汉语.md)的全部函数:`打开事件源`、`关闭事件源`。`实现接口。豫` 固定公共包身份与版本,接口检查器须在构建前核对签名。 **宿主原语**:适配只调用 `豫言_浏览器_网页能力`(同步)与 `豫言_浏览器_网页能力异步`(需要等待的操作)两个原语,操作名为 `事件源.打开`、`事件源.关闭`;失败以(阴,错误文)返回,再由本适配转成豫言事故,不让 JavaScript 异常越过 Wasm 边界。 **宿主实现**:`宿主/浏览器/宿主.mjs` 的 `创建网页能力`。宿主用 `fetch` 流实现 SSE(不用原生 `EventSource`,因为原生对象没有背压):`创建SSE解析器` 按 WHATWG 规则切分事件,宿主把事件成批投递为类型“事件流”的事件;每个事件源在队列里未取走的批达到 8 个时暂停读流,应用取走后继续,所以不丢事件。断线后自动带 `Last-Event-ID` 重连,重连间隔可由服务器 `retry:` 调整;HTTP 非 200、内容类型不对或事件过大为致命错误。 **运行要求**:等待类函数挂起豫言栈,浏览器须支持 JSPI;八个新包与网页事件包共用同一个统一事件队列。 **验收**:一致性验证见 `../网页定时/一致性验证/`(探针应用 `前端接口探针`、宿主单元测试与 JSDOM+真实 Wasm 的一致性测试,说明见其中的 `说明.汉语.md`)。
# 网页事件源浏览器适配 `事件源。豫` 行[网页事件源之约](../../../豫言操作系统接口/网页事件源/规范.文言.md)之诸函数:`打开事件源`、`关闭事件源`。`实现接口。豫` 定公共包之身与版,接口检查器当于构建前核其签。 **宿主原语**:适配惟调 `豫言_浏览器_网页能力`(同步)与 `豫言_浏览器_网页能力异步`(须候者)二原语,操作名为 `事件源.打开`、`事件源.关闭`;败则以(阴,错误文)返,本适配转为豫言事故,不使 JavaScript 之异常越 Wasm 之界。 **宿主之行**:`宿主/浏览器/宿主.mjs` 之 `创建网页能力`。宿主以 fetch 流行 SSE(不用原生 EventSource,盖原生之物无背压):`创建SSE解析器` 依 WHATWG 之规切事,宿主成批投之,类曰“事件流”;每事件源于列中未取之批达八则止读其流,客取后复续,故不失事。断则自带 Last-Event-ID 而重连,重连之间可由服务器之 retry: 调之;HTTP 非二百、类型不合或事过大为致命之错。 **运行之要**:候事之函数挂豫言之栈,浏览器须支持 JSPI;八新包与网页事件包共一统一事列。 **验收**:一致性验证见 `../网页定时/一致性验证/`(探针应用“前端接口探针”、宿主单元测试与 JSDOM 加真实 Wasm 之一致性测试,说明见其中之 `说明.文言.md`)。