KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA

实时推送与 SSE — keel 龙骨

实时推送与 SSE 的参考信息:实时推送与 SSE

课程导读 · 一条连接能撑多久,决定了用户看到的是什么

SSE(Server-Sent Events)是这轮 AI 应用里最被低估的技术:所有大模型的流式输出、Agent 的中间过程回传、后台任务的进度条,默认都是走它。它简单到只有一个 text/event-stream 响应头,也脆弱到能被代理缓冲、gzip、负载均衡空闲超时、手机切后台任何一个环节悄悄掐断。

这门课的目标不是"会用 EventSource",而是让一条 SSE 连接在生产环境里活得住、断了能续、续了不错。

与其它课程的位置

相关内容 在哪 与本课的分工
SSE + Redis Stream 续播的真实案例 Harness 源码解剖室板块里讲「多宿主托管」的那门课,第 03 章(会员专区) 那边是一个平台的具体解法;本课讲通用原理与可复用做法
长任务为什么要异步 后端高并发工程拔高 05 那边解释"为什么要异步";本课解决"结果怎么实时回传"
长连接的优雅下线 构建打包与部署上线 04 那边讲发布时长连接怎么处理;本课讲连接本身怎么设计成可重连
MCP 的 SSE transport MCP Protocol Engineering 06 那边是协议视角;本课是传输与工程视角

建议顺序:先看《后端高并发工程拔高》理解异步链路(或至少知道为什么长任务不能同步等),再来学这门。

你会拿到什么

章节 一句话 关键动作
01 选型 什么时候用 SSE 而不是 WebSocket 四种通道对比 + 决策树 + 成本表
02 协议本身 报文格式与浏览器的真实行为 五个字段 + Last-Event-ID + EventSource 的三条限制
03 服务端实现 从"能跑"到"能上线" 异步生成器 + 关闭缓冲 + 心跳 + 超时配置
04 断线重连与事件续播 断的不是连接,是信任 Last-Event-ID + 事实日志 + 幂等消费
05 大模型流式输出 token 流之外的结构化事件 事件类型设计 + 增量渲染 + 取消传播
06 连接治理与容量 长连接是一种新的容量单位 连接即并发 + 背压 + 多实例广播
07 生产坑与可观测 为什么本地好好的线上卡住 缓冲/压缩/代理/移动端四类坑 + 指标
08 安全与运维 一条不能带 header 的连接怎么鉴权 三种鉴权方案 + 租户隔离 + 灰度回滚

每章结构统一:原理 → 动手:可观察结果 → 故障注入 → 自测题。

这门课的硬要求

与后端板块一致:没有数据不许下结论。长连接系统尤其如此,因为它的失败模式是"看起来正常但没有数据流动",只有量化指标能暴露。

额外三条:

  1. 每条长连接都要能被观测:首字节时间、事件数、重连次数、异常断开原因分类;
  2. 任何"卡住"都要能定位到是哪一层(应用层生成器 / 反向代理缓冲 / 压缩 / 负载均衡超时):
  3. 断线重连必须真的测过——在压测里主动掐断连接,看客户端是否自动恢复且不错乱。

替身边界

服务端示例以 FastAPI(Python 异步) 为主,少量给出 Node/Express 对照;代理以 nginx 为主。WebSocket、gRPC streaming 只作对比,不展开实现。私有部署与 CDN 的差异会标注,但不涉及具体厂商配置。

进入 keel 阅读