理解WebSocket协议中控制帧:close、ping、pong

  • 控制帧

    控制帧用于WebSocket协议交换状态信息,控制帧可以插在消息片段之间。

    所有的控制帧的负载长度均不大于125字节,并且禁止对控制帧进行分片处理。

    目前控制帧的操作码定义了oxo8(关闭帧)、oxo9(Ping帧)、oxoA(Pong帧)。

  • 关闭帧(oxo8)

    关闭帧可能包含数据部分,该部分表名了关闭的原因。

    客户端发送给服务器的关闭帧必须掩码处理。

    应用程序在发送了一个关闭帧后,禁止再发送任何数据(此时处于CLOSING状态)。

    如果断电(客户端或服务器)收到了一个关闭帧,并且之前没有发送过关闭帧,则断电必须发送一个关闭帧作为响应。

    当断电可以发送关闭响应时应尽快发送关闭响应,一个端点可以延迟发送响应直到它的当前消息发送完毕(例如,已经发送了大多数的消息片段,则端点可能会在发送关闭响应帧前先将剩下的消息帧发送出去)。

  • Ping帧(oxo9)

    Ping帧可以包含应用数据。

    一旦接到了一个Ping帧,断点必须返回一个Pong帧作为响应,除非他收到了一个关闭帧。

    它应在可以发送时尽快发送Pong帧响应。

    断电可以再连接建立后一直到连接关闭前任何时候发送Ping帧。

  • Pong帧(oxoA)

    Pong帧必须与Ping帧拥有相同的应用数据部分。

    如果端点收到了多个Ping帧,但还没来的及全部回应,可以只回应最后一个Ping帧。

    Pong帧可以在未收到Ping帧时就被发送,用作单向心跳包。

    不需要对未被请求的Pong帧(对方主动发送的Pong帧)进行回应。

  • Reference

  1. Web技术研究室:WebSocket协议详解及应用(六)-WebSocket协议控制帧结构详解
  2. 【译】WebSocket协议第五章——数据帧(Data Framing)
  3. The WebSocket Protocol
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值