HTTP 是“一问一答”,WebSocket 建立后是全双工长连接:服务器能随时主动推送。适合聊天、通知、实时行情、协作等高实时场景。
生产环境还要处理:心跳保活(防断线)、断线重连(体验兜底)、分布式连接管理(多实例消息路由)。
核心取舍:实时性好但有连接成本与运维复杂度,按场景决定要不要用,别为“实时”而实时。
生产级 WebSocket 的必备能力。
建立、维护、关闭连接。
定时心跳防断线。
自动重连与补偿。
分布式消息推送。
连接鉴权与安全。
连接数与延迟监控。
从接入到稳定。
确认实时推送诉求,选 WebSocket 或轮询。
客户端建立连接,服务端管理与推送。
心跳机制、断线重连与消息补偿。
多实例路由、鉴权、连接监控。
两种实时方案对比。
| 维度 | WebSocket | 轮询 |
|---|---|---|
| 实时性 | 实时推送 | 有延迟 |
| 资源开销 | 长连接占资源 | 请求频繁 |
| 实现复杂度 | 较高 | 简单 |
| 适合 | 高实时场景 | 低频轻量 |
加心跳保活 + 指数退避重连 + 消息补偿,把断线的影响降到最低。
用消息中间件/Redis 广播连接信息,网关按连接路由,保证消息能到对应实例。
握手时校验 token、连接鉴权,消息权限服务端校验,不能只靠前端。
监控连接数、合理超时释放、必要时按业务分流或用第三方实时服务。