websocket
websocket
WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次 HTTP 握手,两者之间就直接可以创建持久性的连接(长连接),并进行双向数据传输
- 升级协议。建立连接的时候,客户端会在 HTTP 请求头中带上 Upgrade: websocket 来和服务端协商,服务端同意后,返回 101 状态码,响应头中也带有 Upgrade: websocket,表明后续通信切换到 websocket 协议
- 心跳检测
- 断线重连
安全问题
[待补充]
和 http 的区别
复用 Http 握手通道,完成 Http 协议的切换升级,通过第一个请求建立了 TCP 连接之后,后续所有数据交互复用同一连接,彻底避免重复握手开销
websocket 优势
- 实时双向通信:突破 HTTP 单向限制,服务器可主动推送数据
- 高性能低开销:长连接复用 + 轻量级头部(数据传输采用二进制帧格式,帧头仅 2~10 字节)
- 高并发支持:单连接承载海量数据流,避免端口资源瓶颈
- 支持二进制数据传输(如文件、音视频)
参考