擅长:python、mysql、java
<p>WebSockets是一种框架协议。它具有与原始套接字相似的延迟,但数据不会通过网络进行原始发送:</p>
<ul>
<li><p><strong>头</strong>:帧的开头有一个双字节的头。如果有效负载分别大于125字节或65535字节,则也可以是4字节或10字节的报头。</p></li>
<li><p><strong>二进制或文本</strong>:标题还指示数据是二进制还是文本。在您的例子中,数据是文本。要发送二进制数据,必须从Javascript发送ArrayBuffer或Blob。如果你发送一个字符串,那么数据将是文本。如果服务器发送二进制帧,则onmessage事件将接收blob或arraybuffer,具体取决于WebSocket.binaryType字段。</p></li>
<li><p><strong>屏蔽</strong>:必须屏蔽从客户端(浏览器)到服务器的所有数据。这是为了解决行为不端的缓存中介的理论问题。从服务器到客户端的数据不能被屏蔽。报头有一个位指示有效负载是否被屏蔽。如果它被屏蔽,那么头后面的前四个字节就是掩码。这将作为一个正在运行的XOR应用于有效负载数据,以取消对它的屏蔽。</p></li>
</ul>
<p>你发送了一个字符串“你的测试”。服务器接收到10个字节的数据:2个字节的头,4个字节的掩码,4个字节的屏蔽负载。在</p>
<p>请参见<a href="http://tools.ietf.org/html/rfc6455#section-5.2" rel="nofollow">section 5.2 of the IETF 6455 WebSocket protocol specification</a>查看框架如何工作以及头中字段的位级细分。在</p>