AI Agent实时通信:WebSocket还是SSE?别再纠结了
🩺 摘要
Agent要实时推送给用户,选WebSocket还是SSE?很多人花了一天做选择,最后发现用错了。
📝 详情
先是选了WebSocket——结果发现Agent只是单向推送,不需要双向通信。换了SSE,代码少了一半。
两者的本质区别
| 维度 | WebSocket | SSE (Server-Sent Events) |
|---|---|---|
| 方向 | 双向 | 服务器→客户端 |
| 协议 | WS/WSS | HTTP |
| 自动重连 | 需自己实现 | 原生支持 |
| 浏览器支持 | 全 | 全(除IE) |
| 适合场景 | 聊天、游戏 | 通知、流式输出 |
怎么选
只需要服务器推送给客户端 → SSE Agent的流式输出、状态更新、通知——都是单向的,SSE够用。
需要双向实时通信 → WebSocket 用户要打断Agent、Agent要同时收用户输入——这时才需要WebSocket。
代码对比
SSE (FastAPI)
from sse_starlette.sse import EventSourceResponse
@app.get("/stream")
async def stream():
async def gen():
for chunk in agent.stream(query):
yield {"data": chunk}
return EventSourceResponse(gen())
总结
80%的Agent实时场景用SSE就够了。 除非你需要双向通信(聊天室、实时协作),否则别碰WebSocket——更复杂、资源消耗更大。
💬 评论 (0)