用途:为应用实现实时通信,支持实时更新、多人协作与在线状态感知。适用场景包括 LLM 流式输出、实时仪表盘、协作编辑、聊天、多人光标与在线状态、离线优先的移动/PWA 同步。
主要能力:提供协议选型决策框架——单向(服务端到客户端)用 SSE,双向用 WebSocket,协作编辑用 WebSocket + CRDT(Yjs 或 Automerge),点对点媒体用 WebRTC(WebSocket 信令、STUN/TURN)。给出五类实现模式:SSE 流式 LLM 输出、WebSocket 聊天、Yjs 协作编辑、Presence 在线状态与光标、离线同步(Yjs + IndexedDB)。
使用方式:按通信模式选择协议后,参考对应参考文档实现。SSE 示例使用 sse-starlette 的 EventSourceResponse,前端用 EventSource 监听 token 事件;WebSocket 示例用 FastAPI 维护连接集合并广播;协作编辑用 Yjs 的 Y.Doc 与 WebsocketProvider;在线状态用 provider.awareness;离线同步用 IndexeddbPersistence 配合 WebsocketProvider。库建议按语言列出:Python 的 websockets、FastAPI WebSocket、Flask-SocketIO、sse-starlette、Flask-SSE;Rust 的 tokio-tungstenite、axum;Go 的 gorilla/websocket、nhooyr/websocket;TypeScript 的 ws、Socket.io、Hono WebSocket、EventSource、Yjs、Automerge。
限制与注意事项:SSE 由浏览器自动重连,WebSocket 需手动实现带抖动的指数退避;安全上建议使用同源 Cookie 或 Sec-WebSocket-Protocol 令牌认证,并按用户做滑动窗口限流;水平扩展需借助 Redis 发布订阅广播消息。资料未提供具体收费、价格与平台信息。