Skip to content

参考

基于 HTTP 现代标准 · 核于 2026-06

速查

  • HTTP 局限:服务器不能主动推 → 轮询/SSE/WebSocket/WebRTC 绕开
  • 短轮询定时拉、长轮询 hold 请求;SSE 单向推、WebSocket 双向、WebRTC P2P
  • SSE:HTTP + text/event-stream + 自动重连 + Last-Event-ID
  • WebSocket:Upgrade 握手 → 101 → 单 TCP 全双工;客户端帧必须掩码
  • WebSocket 心跳 ping/pong(浏览器 JS 不能主动发 ping,需应用层心跳);重连指数退避
  • WebRTC:信令交换 SDP + ICE + STUN(打洞)/ TURN(中继);对称 NAT 需 TURN
  • 选型:单向 SSE / 双向 WebSocket / P2P WebRTC / 偶发轮询
  • 趋势:SSE 在 AI 流式回潮;WebTransport over HTTP/3 新兴

五方案对比

方案方向底层协议实时性开销典型场景
短轮询客户端拉HTTP低(间隔决定)高(空请求)简单偶发
长轮询客户端拉(hold)HTTP中高兼容性兜底
SSE服务器单向推HTTP 长连接通知/行情/AI 流式
WebSocket双向全双工TCP(HTTP 升级)聊天/协作/游戏
WebRTCP2P 双向UDP(P2P)极高低(直连)音视频/文件直传

WebSocket 协议要点

要点
握手GET + Upgrade: websocket + Sec-WebSocket-Key101 Switching Protocols + Sec-WebSocket-Accept
AcceptKey + 魔术串 → SHA-1 → Base64(仅防误升级,非安全机制)
连接握手后脱离 HTTP、复用同一 TCP 全双工
opcode文本 0x1 / 二进制 0x2 / 关闭 0x8 / ping 0x9 / pong 0xA
掩码客户端→服务器帧必须掩码(防缓存投毒);反向不掩码
协议ws://(80) / wss://(443,over TLS,生产首选)
HTTP/2/3RFC 8441(H2)/ RFC 9220(H3)扩展 CONNECT 支持

WebSocket 工程实践

要点
心跳ping/pong 探活;浏览器 JS 不能主动发 ping,需应用层心跳对抗 NAT/代理超时
重连指数退避 + 抖动(防 thundering herd);1006 重连、1000 不重连
可靠性协议不保证应用层送达,需 ACK + 序号 + 重发
代理/LB反向代理需透传 Upgradewss 穿透企业代理更可靠
鉴权浏览器不能自定义握手头 → Cookie / URL ticket / 子协议夹带 token

WebRTC 与 NAT 穿透

要点
用途浏览器间 P2P 实时音视频/数据,无需插件
信令交换 SDP(媒体能力/候选);WebRTC 不规定信令通道,常用 WebSocket
ICE收集候选地址、连通性检查、择优;候选类型 host/srflx/relay
STUN发现公网映射地址、尝试 UDP 打洞
TURN打洞失败时中继(保证连通但耗带宽);对称 NAT 需 TURN
DataChannel基于 SCTP/DTLS、默认加密、可配可靠/不可靠

NAT 基础见 网络层与路由 · NAT 与 DHCP

权威链接

相关页