当前位置: 首页 > 知识库问答 >
问题:

Websockets消息完整性

邬弘化
2023-03-14

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

换句话说,如果服务器依次发送hello,然后发送its me,那么客户机是否总是接收包含helloits me的两条消息,或者客户机是否可能接收helloits,然后接收helloits me之类的消息?

共有1个答案

程昕
2023-03-14

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

但是请注意,WebSocket是一种低级传输。把它想象成一个基于Web的TCP。应用程序程序员应该“通过WS/WSS”使用高级协议,而不要担心排序、重连接、存在、发布/订阅、元组空间、保证交付等。如果我们不这样做,几十个几十年的应用协议将被重新发明。

 类似资料:
  • 这段代码适用于发送数据并关闭连接的客户机,但是当使用一个连接的客户机多次发送时,数据没有被读取->我应该在读取完整正文后关闭连接吗?

  • 我订阅了 在我的例子中,用户没有通过身份验证,但从这里 虽然用户目标通常意味着一个经过身份验证的用户,但它并不是严格要求的。不与经过身份验证的用户关联的WebSocket会话可以订阅用户目的地。在这种情况下,@sendtouser注释的行为与broadcast=false完全相同,即只针对发送正在处理的消息的会话。 未捕获此异常。所以我尝试使用直接将其发送给用户。 我基本上想做的是: 某些内容应该

  • 本文向大家介绍PHP+RabbitMQ实现消息队列的完整代码,包括了PHP+RabbitMQ实现消息队列的完整代码的使用技巧和注意事项,需要的朋友参考一下 前言 为什么使用RabbitMq而不是ActiveMq或者RocketMq? 首先,从业务上来讲,我并不要求消息的100%接受率,并且,我需要结合php开发,RabbitMq相较RocketMq,延迟较低(微妙级)。至于ActiveMq,貌似问

  • ATM:自动取款机。 1回到第4章,我举了一个使用消息传递框架在线程间发送信息的例子。这里就会使用这个实现来完成ATM功能。下面完整代码就是功能的实现,包括消息传递框架。 清单C.1实现了一个消息队列。其可以将消息以指针(指向基类)的方式存储在列表中;指定消息类型会由基类派生模板进行处理。推送包装类的构造实例,以及存储指向这个实例的指针;弹出实例的时候,将会返回指向其的指针。因为message_b

  • 我在使用spring WebSockets时遇到以下错误: 用例:在我们的服务器端代码中,我们有一个在数据库中搜索值的功能。如果这些值不在数据库中。它将访问servlet并获取数据。第二部分,即访问servlet并获取数据是异步调用。 因此,对于一个请求,我们必须在数据库中搜索多个内容… 示例:在request中,我们得到了一个参数channel:1这个channel映射到多个ID,比如1映射到1

  • 本文向大家介绍Java消息摘要算法MAC实现与应用完整示例,包括了Java消息摘要算法MAC实现与应用完整示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java消息摘要算法MAC实现与应用。分享给大家供大家参考,具体如下: 一 介绍 MAC:Message Authentication Code HMAC:keyed-Hash Message Authencication Code,