我正在检查Websocket的行为。是Websocket消息导向不像TCP流?
例如,当我发送数据ABC, DEF, GHI时,它是否保证接收数据ABC, DEF, GHI?在TCP流中,不能保证接收到AB、DEFG、HI。
是的,它是面向消息的(实际上是面向框架的)。
Per RFC 6455:
握手成功后,客户端和服务器将数据传回以此类推,在本规范中以概念单位表示为"messages"在网络上,消息由一个或多个消息组成帧。WebSocket消息不一定对应于特定网络层的帧,如碎片化的消息由中介合并或分裂。
…
WebSocket协议的设计原则是是最小的帧()唯一存在的帧是使基于协议帧而不是基于流的Unicode文本和二进制帧之间的区别)。这是预料之中的元数据将被应用程序分层置于WebSocket之上层,就像元数据在TCP之上分层一样应用层(如HTTP)
从概念上讲,WebSocket实际上只是TCP之上的一个层
为浏览器添加了基于web来源的安全模型
增加了一个寻址和协议命名机制来支持一个端口上有多个业务,一个IP上有多个主机名地址
是TCP之上的一种帧机制,用于返回IPTCP建立在包机制上,但没有长度限制
包含一个额外的带内关闭握手在代理和其他中介存在的情况下工作