SSE 是基于HTTP协议的,以event-stream 流式格式进行单向传递
现如今在AI领域是非常常见的 从前端的角度: 是通过EventSource 来进行构建 接口实例, 通过onMessage 监听, 通过HTTP2.0 规避并发限制造成的传输失败, http1.1版本是存在浏览器的限制
特点
- 传输格式纯文本,更适配简单文本传输场景
- 自动重连,无需手动管理
后台传输格式设置为text/event-stream
Content-Type: text/event-stream // 必须,指定为事件流类型
Cache-Control: no-cache // 必须,禁止缓存,确保数据实时性
Connection: keep-alive // 必须,保持长连接
前端直接进行监听
eventSource.onmessage = (event) => { const data = JSON.parse(event.data); console.log('Received data:', data); };
断线重连 那么如果发现请求报错,那么可以配合后端,传输Last-Event-ID 来进行续传
技术选项 websocket 基于ws 协议,双向传输,文本以二进制,文本为主,更适配双向频繁传输信息,那么对于流式输出对话这种场景,就不适配,过重