大模型---SSE与WebSocket
目录
一.SSE
二.WebSocket
三.SSE与WebSocket的区别
一.SSE
SSE(Server-Sent Events),它允许服务器通过一个长时间保持打开的 HTTP 响应,持续向浏览器发送事件。浏览器端通过 EventSource API 建立连接,服务器端返回的响应类型是text/event-stream。SSE 是服务器到客户端的单向推送。客户端如果要把数据发给服务器,通常另开普通 HTTP 请求,例如 fetch()、POST、PUT 等。
1.SSE的自动重连
当连接异常断开时,浏览器通常会自动尝试重新连接。具体来说,每个EventSource对象都有 reconnection time 和 last event ID string;当服务器发送id字段后,浏览器会保存这个last event ID。当浏览器重新建立 SSE 连接时,会把上一次收到的事件 ID 放入Last-Event-ID请求头中,服务器可以据此补发断线期间遗漏的事件。
例如,服务器发送id:101,浏览器保存 lastEventId = 101。当网络断开,浏览器会自动重连,请求头带上Last-Event-ID: 101,服务器会从102开始补发。
但是,自动重连不等于自动保证消息不丢。如果服务器没有保存事件日志,或者不能根据 Last-Event-ID 做补发,重连后仍然可能丢消息。
2.流式文本
SSE天然适合不断输出文本片段,这也是为什么很多 AI 生成式接口会使用类似 SSE 的流式响应模型。但是,标准事件流是文本格式。如果要传二进制,需要自己做Base64或其他编码,这会带来额外体积和处理成本。
二.WebSocket
WebSocket
