WebSocket 是一种在 HTTP 握手后通过 HTTP Upgrade 切换协议,并在一个 TCP 连接上进行 全双工通信 的应用层协议。

它适合需要低延迟、双向实时通信的场景,例如聊天、协同编辑、实时行情、游戏状态同步和浏览器远程控制。连接建立后,客户端和服务器都可以主动发送消息,不需要每次通信都重新发起 HTTP 请求。

核心概念

  • 一次握手,持续通信:先用 HTTP 完成握手,再升级为 WebSocket 帧协议。
  • 双向推送:客户端和服务器都能主动发送消息,不局限于请求/响应。
  • 长连接成本:连接长期占用服务器资源,需要处理心跳、断线重连、鉴权刷新和背压。

与 SSE 的区别

SSE 更适合服务器向浏览器单向推送文本事件;WebSocket 更适合双方都要主动发送消息、消息格式不固定或延迟要求更强的交互。

相关术语