What's Next?
SSE 和 WebSocket 是什么?
全双工通信:客户端和服务器可以同时发送和接收数据。
大模型应用出现前的主流网络通信协议是什么?
基于请求-响应模型。
简单易用:HTTP 协议设计简单,易于实现和使用。
为什么大模型应用没有沿用 Web 类应用的主流通信协议?
实时对话:用户与模型进行连续交互,模型需要即时响应。例如通义千问,HIgress 官网的答疑机器人,都是需要依据客户问题,即时做出响应。
仅支持单向通信,即请求-响应模型,必须是客户端发起时,服务端才能做出响应,无法进行双向通信,导致无法支持流式输出,无法处理长时任务。
为什么 SSE 和 WebSocket 更适合支持大模型应用?
SSE 的工作流程如下:
客户端通过 JavaScript 的EventSourceAPI 向服务器发起 HTTP 请求。
Accept: text/event-stream,表明客户端支持 SSE 协议。consteventSource=newEventSource('https://example.com/sse-endpoint');Content-Type: text/event-stream:表明响应内容为 SSE 数据流。
Cache-Control: no-cache:禁用缓存,确保数据实时更新。Connection: keep-alive:保持长连接。HTTP/1.1200OKContent-Type:text/event-streamCache-Control:no-cacheConnection:keep-alive
data:开头,以两个换行符\n\n结束。data: {"message": "Hello"}data: {"message": "World"}
EventSource的onmessage事件监听服务器推送的数据。eventSource.onmessage=(event)=>{console.log('Receiveddata:',event.data);};服务器可以通过发送retry:字段指定重连时间(毫秒)。
示例重连设置:
retry:5000
stream=True参数请求流式响应,通过开发者工具或curl查看返回的Content-Type,若为text/event-stream,则明确为 SSE。curl-XPOST"https://api.deepseek.com/v1/chat/completions"\-H"Authorization:BearerYOUR_KEY"\-H"Content-Type:application/json"\-d'{"model":"deepseek-chat","messages":[{"role":"user","content":"Hello"}],"stream":true}'\-v#查看详细响应头<HTTP/1.1200OK<Content-Type:text/event-stream<Transfer-Encoding:chunked
data: {...}\n\n,符合 SSE 规范[1]。data:{"id":"123","choices":[{"delta":{"content":"Hi"}}]}data:[DONE]WebSocket 的工作流程如下:
Upgrade: websocket:表明客户端希望升级到 WebSocket 协议。Connection: Upgrade:表明客户端希望升级连接。Sec-WebSocket-Key:随机生成的 Base64 编码字符串,用于握手验证。GET/ws-endpointHTTP/1.1Host:example.comUpgrade:websocketConnection:UpgradeSec-WebSocket-Key:dGhlIHNhbXBsZSBub25jZQ==Sec-WebSocket-Version:13
Upgrade: websocket:确认协议升级。Connection: Upgrade:确认连接升级。Sec-WebSocket-Accept:基于客户端的Sec-WebSocket-Key计算的值,用于验证握手。HTTP/1.1101SwitchingProtocolsUpgrade:websocketConnection:UpgradeSec-WebSocket-Accept:s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
{"message":"Hello"}[0x01,0x02,0x03]
CloseFrame:-Code:1000(NormalClosure)-Reason:"Connectionclosedbyclient"
实时通信协议的技术挑战和应对方案
软件变更和服务扩缩容导致的稳定性风险
大带宽导致内存快速上涨的稳定性风险和带宽成本
高延时导致防范恶意攻击的资源成本增高
认证鉴权:对来自客户端的请求,进行合规性的校验。基于具体的业务需求,选择第三方的认证协议,从我们服务的客户经验上看,选择OAuth2、JWT 的居多。
What's Next?
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |