我正在检查 Websocket 的行为。与 TCP 流不同,Websocket 消息是面向消息的吗?
比如我发送数据ABC、DEF、GHI时,那么保证收到数据ABC、DEF、GHI吗?在 TCP 流中,不保证:我们可能会收到 AB、DEFG、HI。
是的,它是面向消息的(嗯,实际上是面向框架的)。
根据RFC 6455:
成功握手后,客户端和服务器以本规范中称为“消息”的概念单元来回传输数据。在网络上,一条消息由一个或多个帧组成。WebSocket 消息不一定对应于特定的网络层帧,因为碎片消息可能会被中间人合并或拆分。
...
WebSocket 协议的设计原则是应该有最少的帧(唯一存在的帧是使协议基于帧而不是基于流,并支持区分 Unicode 文本和二进制帧)。预计元数据将被应用层置于 WebSocket 之上,就像应用层(例如 HTTP)将元数据置于 TCP 之上一样。
从概念上讲,WebSocket 实际上只是 TCP 之上的一层,它执行以下操作:
为浏览器添加了基于 Web 源的安全模型
增加了寻址和协议命名机制,以支持一个端口上的多个服务和一个 IP 地址上的多个主机名
在 TCP 之上分层一个成帧机制,以返回到 TCP 所建立的 IP 数据包机制,但没有长度限制
包括额外的带内关闭握手,旨在在代理和其他中介存在的情况下工作
| 归档时间: |
|
| 查看次数: |
278 次 |
| 最近记录: |