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字节,没有消息体
可变头