乐闻世界logo
搜索文章和话题

WebSocket 是什么?它与 HTTP 有什么区别?

2月18日 21:45

WebSocket 是一种网络通信协议,提供了在单个 TCP 连接上进行全双工通讯的能力。它是 HTML5 的一部分,允许服务器和客户端之间进行实时、双向的交互通信。

与 HTTP 的主要区别

1. 通信模式

  • HTTP: 半双工通信,客户端发起请求,服务器响应后连接关闭
  • WebSocket: 全双工通信,双方可以同时发送和接收数据

2. 连接持久性

  • HTTP: 无状态协议,每次请求都需要建立新的连接
  • WebSocket: 持久连接,建立后可以保持长时间通信

3. 协议开销

  • HTTP: 每次请求都包含完整的 HTTP 头部,开销较大
  • WebSocket: 建立连接后,数据帧头部很小(2-14 字节),开销极低

4. 实时性

  • HTTP: 需要轮询或长轮询来实现实时通信,延迟较高
  • WebSocket: 服务器可以主动推送数据,实时性强

WebSocket 协议特点

握手过程

WebSocket 通过 HTTP 升级机制建立连接:

shell
客户端请求: GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Sec-WebSocket-Version: 13 服务器响应: HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

数据帧格式

WebSocket 使用轻量级的数据帧格式,支持文本和二进制数据传输。

应用场景

  • 实时聊天应用
  • 在线游戏
  • 股票行情推送
  • 协同编辑
  • 实时监控和仪表板
标签:WebSocket