SSE 服务端(SSE Server) 协议

别名: 服务端事件流

基于 Server-Sent Events 的服务端实现:把事件编码成 `event:` + `data:` 帧写出、注释行保活、断线清理。ch03 手写了客户端解析器,本章补上服务端那一半。见[第 15 章](/chapters/15-service-v02-events/)。

它是什么

SSE 服务端是基于 Server-Sent Events 的服务端实现:把事件编码成 event: + data: 帧写出、注释行保活、断线清理。ch03 手写了 SSE 客户端解析器,本章补上服务端那一半——同一个协议的两端,编码与解码互为逆运算(encodeSse 一个事件 → 一个帧;parseSse 只认 data: 行,data.type 是事实来源)。

三个关键点

服务端要注意三件事:响应头——Content-Type: text/event-stream + Cache-Control: no-cache,否则中间层(反向代理/网关)会缓冲响应,事件「攒着」不出去(必要时还要 X-Accel-Buffering: no 这类开关);保活——没事件时发注释行(: 开头 + 空行),防止连接被空闲超时掐断;断线清理——req.on('close') 里统一清定时器、退订监听、标记关闭,否则监听器越积越多、服务器泄漏。

在本教程的位置

第 15 章GET /events?sessionId=x 端点:先订阅、再回放,且两步在同一同步 tick 内完成(JS 单线程保证中间插不进 append),迟到订阅者不错过开头、也不看到重复;done / error 到达即关闭流。ch16 断线恢复还会在流的外面套一层序号。

相关词条

出现在这些章节