Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Websockets消息完整性_Javascript_Websocket_Connection_Message_Integrity - Fatal编程技术网

Javascript Websockets消息完整性

Javascript Websockets消息完整性,javascript,websocket,connection,message,integrity,Javascript,Websocket,Connection,Message,Integrity,当在客户端和服务器之间使用WebSocket全双工数据连接时,我是否可以保证,当从服务器发送两条消息时,我将在客户端上接收到这两条完全相同的消息,而TCP没有 换句话说,如果服务器依次发送hello,然后发送其me,客户端是否总是收到两条包含hello和its me的消息,或者客户端是否可能先收到helloit然后收到s me或者只收到一条类似helloits me的消息?如果连接非常糟糕,您可能会丢失一条消息(但是应该使用tcp重新发送),但它不太可能以这种方式分裂。 每个文本消息都有边界-开

当在客户端和服务器之间使用WebSocket全双工数据连接时,我是否可以保证,当从服务器发送两条消息时,我将在客户端上接收到这两条完全相同的消息,而TCP没有


换句话说,如果服务器依次发送
hello
,然后发送
其me
,客户端是否总是收到两条包含
hello
its me
的消息,或者客户端是否可能先收到
helloit
然后收到
s me
或者只收到一条类似
helloits me
的消息?

如果连接非常糟糕,您可能会丢失一条消息(但是应该使用tcp重新发送),但它不太可能以这种方式分裂。 每个文本消息都有边界-开始(0x00)和结束(0xFF)字节。浏览器不应弄乱消息。 您可能会以另一种顺序收到邮件

您如何才能更确定:

  • 将您自己的控制和添加到消息中(但实际上这是开销)
  • 使用wss(websockets+tls/ssl)协议-损坏的消息无法很好地解密

  • WebSocket最初有文本消息开始和结束字节,但这是旧信息。(2011年12月)框架中有一个长度组件。顺便说一句,框架规范中有一个标志,指定框架是整个“消息”还是“消息片段”,也就是说,有其他框架组成这个“消息”。由接收方正确组合片段以传递给应用程序代码。通常,除非您有非常大的“消息”(将WS“消息”视为“数据”而不是真正的消息……WS本身并不是真正的“消息”协议),否则您不必考虑这一点


    但请注意,WebSocket是一种低级传输。将其视为基于web的TCP。应用程序程序员应该使用“基于WS/WSS”的高级协议,而不必担心排序、重新连接、状态、发布/订阅、元组空间、保证交付等问题。如果我们不这样做,几十年前的应用程序协议将被重新发明。

    看看这篇文章:每条消息周围都有分隔符;它们永远不会像那样结合在一起。我不确定“保证”对你意味着什么;规范是以某种方式编写的,丢失的数据包会被重新发送,这与数据报不同,但它是在互联网上进行的,如果没有回溯验证,很难确定客户机是否从我们从JS使用的高级套接字API中获得了特定的消息。您有任何可以找到更多详细信息的来源吗?只有RFC。WebSocket碎片:如果我想在消息中发送0x00或0xFF,该怎么办?UTF-8不包含带有此类代码的符号。因此,如果只发送文本字符串,则无需发送它们。如果您希望发送具有不可预测字节的二进制数据,您可以为此使用特殊的二进制帧。我想发送二进制数据,这就是为什么!:一个消息框架会被完全破坏吗?i、 因此,如果每条消息都是一段完整的JSON编码数据,我总是可以安全地对另一端的每条消息进行
    JSON.parse
    ,而不会出现问题?