控制报文结构 MQTT 控制报文由三部分组成,按照 下图描述的顺序: 固定报头 每个 MQTT 控制报文都包含一个固定报头。下图描述了固定报头的格式,固定报头的第一字节是固定的,用于表示控制报文类型和标志位,不再赘述请参考 MQTT协议规范 紧接的是剩余长度这里重点记录一下剩余长度的含义以及计算方式。 剩余长度 **剩余长度(Remaining Length)**表示当前报文剩余部分的字节数,包括可变报头(Variable header)和负载(Payload)的数据 剩余长度字段使用一个变长度编码方案,从byte2开始,最多可达4个字节,也就是说可能用byte2~byte5来编码表示剩余长度 对于小于128的值使用单字节编码,大 …
阅读更多一些容易搞混的概念: QoS是发送者和接受者之间的协议,而不是Publisher和Subscriber之间的协定,Subscriber订阅到的消息的QoS和Publisher没有直接关系 Subscriber订阅到的消息的QoS:Publisher发布消息到Broker的QoS为QoSA,Subscriber从Broker订阅消息的QoS为QoSB,取QoSA和QoSB这二者的最小值 QoS 0:最多分发一次 消息的分发依赖于底层网络的能力。接收者不会发送响应,发送者也不会重试。消息可能送达一次也可能根本没送达。 QoS1:至少分发一次 服务质量确保消息至少送达一次。QoS 1 的 PUBLISH 报文的可变报头中包含一个报文标识 …
阅读更多保留消息(Retained) 保留消息是指在 PUBLISH 数据包中 Retain 标识设为 1 的消息,Broker 收到这样的 PUBLISH 包以后,将保存这个消息以及它的QoS,当有一个新的订阅者订阅相应主题的时候,Broker 会马上将这个消息发送给订阅者。 保留消息具有以下特点: 一个 Topic 只能有 1 条保留消息,发布新的保留消息将覆盖老的保留消息 如果订阅者使用通配符订阅主题,它会收到所有匹配的主题上的保留消息,如下所示 保留消息发送到订阅者时,消息的 Retain 标识仍然是 1,订阅者可以判断这个消息是否是保留消息,以做相应的处理。同时,订阅者收到的消息的QoS与保留消息一致 只有新的订阅者才会收到保留消 …
阅读更多本文记录一些学些MQTT的过程中的重点和难点,学习材料包括: MQTT协议规范 MQTT 协议学习: 总结 与 各种定义的速查表 - schips - 博客园 (cnblogs.com) 角色 MQTT Broker - 消息代理服务器 MQTT Client - 消息发布者,通过QoS和Topic发布和订阅消息。MQTT Client可以同时是Publisher和Subscriber 订阅 包含一个主题和QoS 订阅与单个会话关联,一个会话可以包含一个或者多个订阅 主题名和主题过滤器 以下内容多来自MQTT3.1.1规范 MQTT Client通过主题发布和订阅消息。主题名可以有不同层级,通过/划分。主题可能是管理员在服务端预先定 …
阅读更多安装 Mac下通过brew安装Mosquitto只需要一条简单的命令:brew install mosquitto 1mosquitto has been installed with a default configuration file. 2You can make changes to the configuration by editing: 3 /usr/local/etc/mosquitto/mosquitto.conf 4 5To restart mosquitto after an upgrade: 6 brew services restart mosquitto 7Or, if you don't …
阅读更多