Skip to content

Websocket是什么

WebSocket 是一种先进的网络通信协议,它在单个 TCP 连接上提供全双工、双向的通信通道。 与传统的 HTTP 协议的请求-响应模式不同,WebSocket 允许服务器主动向客户端发送数据,从而实现了客户端和服务器之间真正的实时数据交换。

WebSocket 的工作原理

WebSocket 的通信过程始于一个 HTTP“握手”。客户端向服务器发送一个特殊的 HTTP 请求,请求将连接升级到 WebSocket。 如果服务器支持 WebSocket,它会同意这个请求,之后这条已经建立的 TCP 连接就会从 HTTP 协议转换到 WebSocket 协议。

一旦连接建立,它将保持持久打开状态,允许客户端和服务器随时双向发送数据,直到其中一方关闭连接。 这种持久性连接避免了 HTTP 协议中为每个请求和响应重复建立和关闭连接的开销,从而大大降低了延迟。

WebSocket 与 HTTP 的主要区别

特性 WebSocket HTTP
通信方式 全双工双向通信 单向请求-响应模式
连接状态 有状态协议,保持持久连接 无状态协议,每个请求-响应周期后连接关闭
数据发起方 客户端和服务器均可主动发送数据 只能由客户端发起请求
延迟 低延迟 相对较高的延迟
头部开销 头部信息少,通常只有2字节左右,节省带宽 每个请求都有较大的头部信息
适用场景 实时应用,如在线游戏、聊天室、实时数据更新 传统的网页浏览、表单提交和静态资源获取
URI 方案 ws:// (未加密) 和 wss:// (加密) http:// (未加密) 和 https:// (加密)

优势

  • 真正的实时通信: 由于服务器可以主动推送数据,信息可以即时传递给客户端,这对于需要快速响应的应用至关重要。
  • 低延迟和高性能: 持久连接和较小的头部开销显著减少了网络延迟,提高了数据传输效率。
  • 更少的网络流量: 一旦连接建立,后续的数据帧头部很小,与 HTTP 请求相比,大大减少了带宽消耗。
  • 资源利用率更高: 减少了服务器为处理频繁的 HTTP 请求而需要不断建立和关闭连接的开销。

应用场景

WebSocket 的实时和双向通信特性使其成为众多现代网络应用的理想选择,包括:

  • 在线聊天应用: 能够即时发送和接收消息,并显示用户的在线状态和输入状态。
  • 多人在线游戏: 确保所有玩家的游戏状态能够实时同步。
  • 实时数据仪表盘: 例如,金融应用的股票报价、体育赛事的实时比分更新等。
  • 协同编辑工具: 允许多个用户同时编辑同一个文档,并实时看到对方的修改。
  • 实时地理位置跟踪: 在共享出行或外卖应用中实时更新车辆或配送员的位置。
  • 即时通知: 向用户推送最新的消息、更新或警报。