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

iot - 如何理解MQTT3.1.1协议中关于SUBSCRIBE行为的如下描述?

蒲勇
2023-06-03

最近在自己实现一个MQTT broker,阅读3.1.1协议的时候无法理解这里的描述:

“如果服务端收到一个SUBSCRIBE报文,报文的主题过滤器与一个现存订阅的主题过滤器相同,那么必须使用新的订阅彻底替换现存的订阅。新订阅的主题过滤器和之前订阅的相同,但是它的最大QoS值可以不同。与这个主题过滤器匹配的任何现存的保留消息必须被重发,但是发布流程不能中断。

有没有大佬能解释一下什么叫做替换现有订阅?难道多个客户端不能订阅完全相同的主题过滤器吗,肯定不是这样的吧,我启动多个终端mosquitto_sub 同一个过滤器topic/#,它们都能收到匹配的发布消息。既然这样那协议里“替换现有订阅”如何理解呢?

共有1个答案

史钊
2023-06-03

这是针对单个客户端而言的啊……

 类似资料:
  • 问题内容: 在下面的代码中,我想测试是否为。如果是的话,我想作为。你怎么做到这一点?如果不使用强制转换,则使用其他技术。 那里的最后一行不会编译。错误是: 协议“ SpecialController”仅具有通用要求或关联类型要求,因此只能用作通用约束。 问题答案: 不幸的是,Swift当前不支持将具有关联类型的协议用作实际类型。但是,从技术上讲这对于编译器是可行的。并且很可能在该语言的未来版本中实

  • 在阅读了一篇关于在协议中使用的讨论之后,我做了一个实验(参见下面的代码)。我认为代码将无法编译,因为根据我的理解,要使类符合协议,它应该具有,这是我没有定义的。但代码实际上起作用了。 我想知道为什么?谢谢你的解释。

  • 如何定制协议 实际上制定自己的协议是比较简单的事情。简单的协议一般包含两部分: 区分数据边界的标识 数据格式定义 一个例子 协议定义 这里假设区分数据边界的标识为换行符”\n”(注意请求数据本身内部不能包含换行符),数据格式为Json,例如下面是一个符合这个规则的请求包。 {"type":"message","content":"hello"}   注意上面的请求数据末尾有一个换行字符(在PHP中

  • 1、https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。 2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl/tls加密传输协议。 3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。 4、http的连接很简单,是无状态的;HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协

  • 本文向大家介绍关于Linux下对于makefile的理解,包括了关于Linux下对于makefile的理解的使用技巧和注意事项,需要的朋友参考一下 什么是makefile呢?在Linux下makefile我们可以把理解为工程的编译规则。一个工程中源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,那些文件需要先编译,那些文件需要后编译,那些文件需要重新

  • 我在RFC 6455-Web Socket协议中看到了一个名为IANA注意事项的部分。 它定义了几个要添加到 HTTP 协议中的 HTTP 标头。如 Sec-WebSocket-Key、Sec-WebSocket-Extensions 等。 但我没有在RFC 2616-HTTP 1.1协议中找到这些标头。 那么这些头文件定义可以使用了吗? (我不太熟悉RFC文档是如何组织的。原谅我,这是个愚蠢的问