MQTT_基础向_发布、订阅、取消订阅

本文详细介绍了MQTT客户端如何实现消息发布(包括packetId、主题名、QoS、保留标志和payload)、订阅主题、接收SUBACK确认订阅结果以及取消订阅主题的过程,涉及报文标识符和QoS等级的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习客户端如何实现发布信息、订阅主题以及如何取消订阅主题

(一)PUBLISH - 发布消息

MQTT客户端在发布消息的时候,会向服务端发送PUBLISH报文。

  1. packetId - 报文标识符
    • 报文标识符可用于对MQTT报文进行标识。不同的MQTT报文的标识符不同。MQTT设备可以通过不同的标识符对MQTT报文进行甄别和管理。
    • 只有QoS级别大于0时,报文标识符才是非零值。如果QoS等于0,则报文标识符为0。
  2. topicName - 主题名
    • 主题名用于识别此信息应该发布到哪一个主题。
  3. QoS - 服务质量等级
    • 表示MQTT消息的服务质量等级,共有三个几级别:0、1、2。
    • QoS决定了MQTT通讯有什么样的服务保证。
  4. retainFlag - 保留标志
    • 在默认情况下,客户端在订阅了一个新的主题之后,并不会马上接收到该主题的信息。只有在客户端订阅了主题之后,服务端接收到该主题的新消息时,服务端才会将最新接收到的该主题的信息推送到客户端。
    • 但在某些情况下,我们需要客户端在订阅某一主题后马上接收到一条该主题的信息。这时候就需要用到保留标志这一信息。
  5. payload - 有效载荷
    • 有效载荷是我们希望客户端发布的实际内容。我们可以使用MQTT协议发送文本,图像等格式的内容。
  6. dupFlag - 重发标志
    • 当MQTT报文的接收方没有及时的确认收到报文时,发送方会重复发送MQTT报文。
    • 在重复发送MQTT报文时,发送方会将此重发标志设置为“true”。
    • 注意,重发标志只有当QoS级别大于0时使用。
(二)SUBSCRIBE - 订阅主题
  • 客户端想要订阅主题,首先要向服务端发送主题订阅请求。客户端通过向服务端发送SUBSCRIBE报文来实现这一请求。
  • 一个SUBSCRIBE报文可以包含有单个或者多个订阅主题名。也就是说,一个SUBSCRIBE报文可以用于订阅一个或者多个主题。
  • 每一个SUBSCRIBE报文还包含有“报文标识符”,报文标识符可以用于对MQTT报文进行标志。不同的MQTT报文所拥有的标识符不同。
(三)SUBACK - 订阅确认

当服务端接收到客户端的订阅报文之后,会向客户端发送SUBACK报文确认订阅。SUBACK报文包含有:订阅返回码、报文标识符。

  1. returnCode(订阅返回码)
    • 客户端可以通过一个SUBSCRIBE报文发送多个主题的订阅请求,服务端会针对SUBSCRIBE报文中所有订阅主题来注意回复给客户端一个返回码。
    • 这个返回码是用来告知客户端是否成功订阅了主题。
返回码Return Code Response
0订阅成功 - QoS 0
1订阅成功 - QoS 1
2订阅成功 - QoS 2
128订阅失败
  1. packetId(报文标识符)
    • MQTT设备通过报文标识符对报文进行管理。
(四)UNSUBSCRIBE - 取消订阅

当客户端要取消订阅某主题时,可以通过向服务端发送UNSUBSCRIBE报文来进行取消订阅。


UNSUBSCRIBE报文包含两个重要信息,一个时取消订阅的主题名称,一个是报文标识符。

  1. topic* - 取消订阅主题
    • 同一个UNSUBSCRIBE报文可以同时包含多个取消订阅的主题名称。
  2. packetId - 报文标识符
    • MQTT设备可以通过该标识符对报文进行管理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

排骨炖粉条

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值