HTTP 是无状态的请求-响应协议:客户端发起请求,服务端响应,一次一来一回,服务端不能主动推送。WebSocket 是全双工长连接协议:连接建立后双方随时可以互相发送数据,服务端可以主动推送。

展开解析

  • 连接建立:WebSocket 借助 HTTP 完成握手(发送带 Upgrade: websocketSec-WebSocket-Key 的请求,服务端回 101 Switching Protocols),之后升级为独立的帧协议,走同一 TCP 连接,此后与 HTTP 无关。
  • 通信模式:HTTP 要模拟推送只能靠轮询/长轮询/SSE,开销大或只能单向;WebSocket 天然双向、低延迟。
  • 开销:HTTP 每个请求都带完整头部(几百字节起步);WebSocket 数据帧头部最小仅 2 字节,适合高频小消息。
  • 状态与生命周期:HTTP 请求间无状态(靠 Cookie 补);WebSocket 连接有状态,需自己处理心跳保活、断线重连。

典型场景:WebSocket 适合聊天、实时行情、协同编辑、游戏;普通 CRUD、静态资源仍用 HTTP。

追问方向:SSE 与 WebSocket 的取舍、WebSocket 如何做认证与水平扩容(连接迁移、消息广播)。