在客户端和服务器之间使用WebSocket全双工数据连接时,我保证,当从服务器发送两条消息时,我将在客户端收到这两条完全相同的消息, TCP确实不是?
换句话说,如果服务器依次发送hello
然后发送its me
,客户端是否始终会收到包含hello
和its me
的两条消息,或者是否可能客户收到helloit
然后s me
或甚至只有helloits me
之类的消息?
答案 0 :(得分:2)
WebSocket最初有文本消息开始和结束字节,但这是旧的信息。在(2011年12月)框架中有一个长度组件。顺便说一句,在框架规范中有一个标志,指定框架是否是整个"消息"或者一个"消息片段",即还有其他帧组成这个"消息"。它由接收器正确组合片段以传递给应用程序代码。通常你不必考虑这个,除非你有非常大的消息" (想想WS"消息" as"数据"而不是真正的消息...... WS本身并不是"消息传递"协议本身。)
但请注意,WebSocket是一种低级传输。可以把它想象成一个基于Web的TCP。应用程序员应该使用高级协议"而不是WS / WSS"并且不用担心订购,重新连接,存在,发布/订阅,元组空间,保证交付等等。如果我们不这样做,将重新发明数十年和数十年的应用程序协议。
答案 1 :(得分:1)
连接非常糟糕,您可能会丢失一条消息(但应该使用tcp重新发送),但它不太可能以这种方式分割。 每条文本消息都有边界 - 开始(0x00)和结束(0xFF)字节。浏览器不应该混乱消息。 可能你可以用另一种顺序获得消息。
你怎么能更确定: