WebSocket
一句话
让浏览器和服务端保持一条「电话线」——双方随时可以说话,不需要挂断重拨。
核心直觉
HTTP: 客户端 ──拨号──→ 服务端 ──挂断──→ 结束
SSE: 服务端 ═══单向广播═══→ 客户端
WebSocket: 服务端 ═══双向通话═══ 客户端为什么需要它(在 AI 场景中)
语音交互场景下,用户说话的同时 AI 也在生成回复——需要双向、实时、低延迟的通信。HTTP 一问一答太重,SSE 只能单向,WebSocket 是正解。
真实案例:流式 TTS
text
客户端 ←→ WebSocket 长连接
→ 发送文字片段(文本帧)
← 接收音频片段(二进制帧)
→ 发送下一段文字
← 接收更多音频
...直到 final=1 关闭用户听到第一句时第二句已经在后台合成——这就是 WebSocket 双向实时通信的价值。
应用场景
| 场景 | 为什么需要 WebSocket |
|---|---|
| 语音 Agent | 用户说话 + AI 回复同时进行,双向实时 |
| 实时协作 | 多人编辑同一文档,需要推送彼此的修改 |
| 聊天应用 | 双向消息收发 |
| 游戏 | 实时双向同步状态 |
横向对比
| HTTP | SSE | WebSocket | |
|---|---|---|---|
| 方向 | 客户端→服务端 | 服务端→客户端 | 双向 |
| 通信模式 | 请求-响应 | 单向推送 | 全双工 |
| 连接 | 短连接 | 长连接 | 长连接 |
| 协议 | HTTP/1.1 | HTTP/1.1 | WS(握手后升级) |
优缺点
优点: 全双工双向通信,低延迟,一条连接搞定收发 缺点: 比 HTTP 复杂(需要处理心跳、重连、消息分帧),部分代理/防火墙不支持 WS,不如 SSE 省资源
如何选择
只需要服务端推送 → SSE。需要双向通信 → WebSocket。普通 CRUD → HTTP 够了。
小结
WebSocket 是实时通信的标配。在 AI Agent 开发中,当你需要语音对话、实时协作、或 Agent 执行过程的实时反馈时,WebSocket 是你绕不开的工具。
下一步
- SSE — 只需要服务端推送时的更简方案