🖋️ websocket

吞佛童子
  • 计算机网络
  • 应用层
  • websocket
大约 2 分钟

🖋️ websocket

1. 连接过程

1) TCP 3 次握手

2) websocket 2 次握手

  • Client 发送 request 通知 升级协议升级为 websocket,同时携带 随机生成的 base64 码
  • Server 回复 response,表示支持 升级协议,同时携带 基于 Client 发送的 base64 码,通过某种公开的算法生成另一段字符串
  • Client 根据 response 的 base64 码和自己通过某种公开的算法生成的字符串进行 匹配,匹配成功,则说明 websocket 建立成功

3) 传输 websocket 格式 message


2. websocket 消息格式

img.png

opcode 4 bit

  • 表示数据帧的 类型
    • 1
      • text 类型, String
    • 2
      • 二进制类型,byte[]
    • 8
      • 关闭连接

payload 长度 7 | 16 | 64 bit

  • 真正传输的数据长度,单位为 字节
  • 由于有多种 payload 长度,因此 优先读取 7 bit,
    • 若在 [0, 125] 区间,则为全部长度;
    • 若为 126,需要读取后 16 位数据,表示长度为 [126, 65535]
    • 若为 127,需要读取后 64 位数据,为其实际长度,数据级别能够达到 TB 级别

payload data

  • 真正传输的数据内容,根据 payload 长度截取指定长度

3. 应用场景

  • 全双工
  • 适用于 Server & Client 频繁交互 的场景
    • 网页游戏、聊天室、消息通知等