请解释 SSE 的基本概念,并阐述在 AI 应用接口中,相比 WebSocket,为什么更倾向于选择 SSE 协议?
考察说明
理解 SSE 协议特点及其在 AI 应用中的适用性,并掌握与 WebSocket 的对比。
回答思路
- 【回答框架 1】SSE(Server-Sent Events)是一种基于 HTTP 的服务器推送技术,允许服务器通过长连接向客户端实时发送事件流。客户端使用 EventSource API 接收,连接是单向的,只能由服务端向客户端推送。
- 【回答框架 2】AI 应用(如 ChatGLM、GPT 等)通常需要将模型生成的文本流式传输给用户,实现打字机效果。SSE 正好满足这种单向、持续、低延迟的推送需求,且实现简单。
- 【回答框架 3】WebSocket 是全双工协议,支持双向通信,但协议实现更复杂,需要额外处理握手、帧协议、心跳等。在 AI 生成场景中,客户端主要接收数据,双向通信并非必须,因此 SSE 更轻量且更易维护。
- 【回答框架 4】SSE 直接基于 HTTP,天然支持断线重连和事件 ID 追踪,而 WebSocket 需要自己实现。此外,SSE 能利用现有 HTTP 基础设施(如代理、认证),兼容性更好。
- 【回答框架 5】高并发环境下,WebSocket 长连接占用大量服务器资源,而 SSE 依赖 HTTP 连接,更容易水平扩展。综合实现成本、资源和可靠性,SSE 更适合 AI 流式输出场景。
- 【关键点 1】SSE 是单向服务端推送协议,基于 HTTP,使用 EventSource 接收。
- 【关键点 2】AI 应用需要流式输出,SSE 满足需求且实现简单。
- 【关键点 3】WebSocket 全双工但复杂,SSE 更轻量。
- 【关键点 4】SSE 自动重连、支持事件 ID。
- 【关键点 5】SSE 便于扩展和兼容现有 HTTP 设施。
- 【易错点 1】不能简单认为 SSE 比 WebSocket 快,速度取决于网络和场景。
- 【易错点 2】SSE 是单向的,若客户端需要发送大量数据则不适用。
- 【易错点 3】SSE 连接数受浏览器限制,需考虑并发连接上限。