0%

MQTT协议中订阅

MQTT协议基础(5):MQTT协议中的订阅

MQTT协议中订阅相关知识包括SUBSCRIBE数据包、SUBACK数据包、UNSUBSCRIBE数据包、UNSUBACK数据包等

订阅主题

通信模型

订阅主题(SUBSCRIBE)

  • 固定头

类型为8,保留位比较特殊

  • 可变头

    可变头为固定两字节,记录包的标识符

  • 消息体

    SUBSCRIBE数据包中消息体,是以一个一个的主题列表组成的,单个主题过滤器(Toptic Filter)结构如下

观察一个示例

订阅确定(SUBACK)

  • 固定头

类型为9

  • 可变头

    可变头就是一个两字节的包的标识符

  • 消息体

    包含一组返回码,为什么是一组,因为主题列表订阅了若干个主题,当然也要返回若干个状态码。

    每一个返回码为一个字节,类型如下。

示例

取消订阅

通信模型

取消订阅(UNSUBSCRIBE)

  • 固定头

类型为10,注意到这里的保留位和SUBSRIBE数据包中一致,都是比较特殊的。

  • 可变头

    可变头中是固定的两字节用来记录数据包的标识符

  • 消息体

    消息体中要包含需要取消订阅的的主题过滤器列表,这些主题过滤器的报文格式同SUBSCRIBE数据包中一致,所不同的是,不在包含QoS字节段。

    例子

取消订阅确认(UNSUBACK)

Broker在收到Client的UNSUBSCRIBE数据包后,会回复Client一个UNSUBACK的数据包作为响应

  • 固定头

类型11,剩余长度为固定的2字节,没有消息体

  • 可变头