Appearance
WebSocket、SSE 与轮询:实时通信的连接模型
主题边界
- 实时通信方案选择的核心是:谁向谁推送、连接保持多久、消息方向是单向还是双向,以及基础设施是否支持。
- WebSocket、SSE、长轮询各自适配不同实时性、复杂度和兼容性场景。
机制与流程
- 短轮询通过周期性请求换取近实时更新,实现最简单,但请求开销大、延迟较高。
- 长轮询会让请求挂起到有数据或超时后再返回,减少空轮询成本,但仍是请求-响应模型。
- SSE 基于单向服务器推送流,适合服务端到客户端持续发送文本事件;WebSocket 则建立全双工长连接,适合双向实时交互。
关键差异
- SSE 简单、天然重连、对代理兼容性较好,但只支持服务端推送;WebSocket 更灵活,但连接治理和基础设施要求更高。
- 轮询方案更容易接入现有 HTTP 基础设施,但在高频更新和大规模连接场景下成本更高。
边界条件
- 并不是所有“实时”都值得上 WebSocket,通知流、日志流和进度流很多时候用 SSE 更轻。
- 连接保活、鉴权续期、断线重连、顺序保证和背压处理,往往比“连上了”本身更难。
工程落点
- 消息中心、协同编辑、行情推送、任务进度和客服系统,会根据双向性和时效性选择不同方案。
- 这道题很适合落到基础设施成本、代理兼容性和前端连接治理策略上。