概述
-
控制帧
控制帧用于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
- Web技术研究室:WebSocket协议详解及应用(六)-WebSocket协议控制帧结构详解
- 【译】WebSocket协议第五章——数据帧(Data Framing)
- The WebSocket Protocol
最后
以上就是复杂太阳为你收集整理的理解WebSocket协议中控制帧:close、ping、pong的全部内容,希望文章能够帮你解决理解WebSocket协议中控制帧:close、ping、pong所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复