个人建设网站要钱吗,wordpress 背景进入效果,上海搜索引擎优化seo,wordpress页脚二维码WebSocket消息帧是WebSocket协议中的一个基本单位#xff0c;它定义了数据在客户端和服务器之间传递的格式。每个数据帧包含了不同类型的数据和各种控制信息。以下是WebSocket消息帧的组成结构#xff1a;
WebSocket 帧结构 FIN、RSV1、RSV2、RSV3 和 opcode#xff08;第一…WebSocket消息帧是WebSocket协议中的一个基本单位它定义了数据在客户端和服务器之间传递的格式。每个数据帧包含了不同类型的数据和各种控制信息。以下是WebSocket消息帧的组成结构
WebSocket 帧结构 FIN、RSV1、RSV2、RSV3 和 opcode第一个字节 FIN1位表示是否为最后一个帧。值为1时表示这是消息的最后一个帧值为0时表示后续还有帧。RSV1、RSV2、RSV3各1位保留位通常为0除非协议规定了扩展。opcode4位表示帧的类型常见的值有 0x0继续帧Continuation frame0x1文本帧Text frame0x2二进制帧Binary frame0x8连接关闭Connection Close frame0x9Ping帧Ping frame0xAPong帧Pong frame MASK 和 Payload length第二个字节 MASK1位指示数据是否被掩码处理。客户端发送的数据必须被掩码因此该位为1服务器发送的数据不需要掩码因此该位为0。Payload length7位、7 16 位、或者 7 64 位表示有效载荷数据的长度。 如果值在0到125之间表示数据的实际长度。如果值为126表示后续的2个字节16位无符号整数是有效载荷长度。如果值为127表示后续的8个字节64位无符号整数是有效载荷长度。 扩展的 Payload length可选 当Payload length为126时这部分是16位的无符号整数表示实际数据长度。当Payload length为127时这部分是64位的无符号整数表示实际数据长度。 MASK key0 或 4 字节 仅在MASK位为1时存在长度为4字节32位用于掩码/解码数据。 Payload data可变长度 实际的数据内容。数据长度由前面的Payload length字段定义。如果MASK位为1则在发送数据时需要用MASK key解码接收数据时需要用MASK key编码。
帧的发送和接收过程
一个典型的WebSocket消息帧在传输过程中的大致结构如下
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
--------------------------------------------------------
|F|R|R|R| opcode|M| Payload len | Extended payload length |
|I|S|S|S| (4) |A| (7) | (16/64) |
|N|V|V|V| |S| | (if Payload len126/127) |
| |1|2|3| |K| | |
------------------------- - - - - - - - - - - - - - - -
| Extended payload length continued, if Payload len 127 |- - - - - - - - - - - - - - - -------------------------------
| | Masking-key, if MASK set to 1 |
--------------------------------------------------------------
| Masking-key (continued) | Payload Data |
-------------------------------- - - - - - - - - - - - - - - -
: Payload Data continued ... :
---------------------------------------------------------------
: Payload Data continued ... :
---------------------------------------------------------------具体示例
例如一个包含长度为126字节的数据文本帧的Basic示例如下
0xffff0000 // FIN1, RSV10, RSV20, RSV30, opcode0x1 (文本帧)
0x7e000002 // MASK1, Payload length126 (表示后面有126字节的数据)
0x12345678 // Masking key掩码键
mask adjusted data // 实际数据数据长度为126字节通过这种详细结构可以灵活的把消息帧从客户端发送到服务器或者从服务器发送到客户端并进行解析或处理。