KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA
实时推送与 SSE — keel 龙骨
实时推送与 SSE 的参考信息:实时推送与 SSE
从这里开始:
这门课针对一个具体阶段:功能已经跑通,但"实时"两个字开始带来麻烦——本地好好的流式输出,线上过了三十秒就断在负载均衡的空闲超时上;用户切了后台再回来,事件从头重放或者整段丢失;连接数一上去内存先满;还有个玄学问题:明明服务端在发,浏览器就是不显示。SSE 只管一个 text/event-stream 响应头,但每一个环节都能悄悄掐断它。
选型 → 协议细节 → 服务端实现 → 断线重连与续播
↓
大模型流式 → 连接治理与容量 → 生产坑与可观测 → 安全与运维
八章的对应关系(前四章把一条连接做对,后四章把它放到生产里):
| 章节 | 解决的核心问题 |
|---|---|
| 01 选型:SSE 还是 WebSocket | 什么时候不该用 SSE,什么时候只有它合适 |
| 02 协议本身 | 报文格式、心跳注释行与浏览器的真实行为 |
| 03 服务端实现 | 关掉缓冲、设对超时、别让框架把流吃掉 |
| 04 断线重连与事件续播 | 用 Last-Event-ID 做到续得上且不重复 |
| 05 大模型流式输出 | token 流之外的中间过程、工具调用与错误回传 |
| 06 连接治理与容量 | 一条长连接占多少资源,什么时候该拒绝新连接 |
| 07 生产坑与可观测 | 「本地好好的线上卡住」怎么在 15 分钟内定位到哪一层 |
| 08 安全与运维 | 一条不能带自定义 header 的连接,怎么鉴权、怎么灰度 |
每章都有可观察结果、故障注入、自测题三段。这门课的结论全部来自真实链路:抓什么报文、看哪个指标、断开哪一层,而不是"记得加心跳"这类口号。
配套课程:后端高并发工程拔高——那边讲为什么要异步,这边解决结果怎么实时回传;事件要落盘、要能重放时接Kafka 工程课。