AIPersonal Project (个人项目)

SSE vs WebSocket

Project: StoryCraft (AI 绘本)
简历背景

"StoryCraft: 集成智谱 GLM-4... 实时绘制..."

面试题

在 AI 流式输出场景中,为什么选择 SSE 而不是 WebSocket?

SSE (Server-Sent Events) 是基于 HTTP 的单向通信,适合大模型"打字机"效果这种只读场景。Websocket 是全双工的双向通信。SSE 实现更简单,自动支持断线重连,且不需要自定义协议,也就是标准的 HTTP 响应。
**核心对比:** 1. **协议:** - WS: 独立的 TCP 协议 (ws://)。握手后脱离 HTTP。 - SSE: 纯 HTTP 协议 (Content-Type: text/event-stream)。 2. **方向:** - WS: 双向 (Chat, Game)。 - SSE: 单向 (Server -> Client)。AI 生成刚好就是 Server 疯狂吐字给 Client。 3. **穿越防火墙:** - WS 有时候会被企业防火墙拦截。 - SSE 就是普通 HTTP 请求,兼容性极好。 4. **数据格式:** - SSE: 规定了 `data:` `event:` `id:` 格式。 - WS: 纯二进制流或文本,需自己解析。 **StoryCraft 场景:** 用户发一句 Prompt (POST 请求),不需要再说话了。 服务端持续返回 tokens。这天然匹配 SSE。 并且 Next.js / Vercel 对 Edge Runtime 的 ReadableStream 支持极好,原生适配合 SSE。