
MQTT发布订阅流程
发布消息报文-Publish
客户端连接broker后就可以发布消息,发布消息需要用Publish报文
Topic Name-必填
字段含义:指定发布消息的主题,一条消息只能指定一个主题,如果要发送给多个主题需要指定多条消息
字段类型:int
- 字段含义:指定消息的服务质量等级,基础介绍中的QoS level 1、2、3
Payload-必填
字段类型:binary(二进制
字段含义:用于指定消息的实际内容,MQTT作为二进制协议,payload可以是任何格式的协议,json、二进制、密文等 字段类型:bool
字段含义:当前消息是否为保留消息 Packet ID
唯一的标记一条消息,QOS为1或者2的时候固定出现
mqtt客户端内部实现,无需我们手动实现 消息是否重发标识,QoS 1&2的时候固定出现
mqtt客户端内部实现,无需我们手动实现
订阅主题报文-Subscribe
订阅主题需要使用Subscribe报文,主要包含一个Packet ID 和Subscription List(订阅列表
用来唯一标识Subscribe报文以及匹配服务端返回的SUBACK的 Packet ID,无需手动设置
订阅列表可以包含多个订阅,每个订阅有一个topic filter和 qos组成,可以通过Subscribe报文一次性订阅多个主题,Subscribe中主题过滤器和Publish中topic不同,可以使用通配符匹配多个主题
订阅逻辑
Reason Codes
0x00-订阅成功且最大QoS等级为0
0x02-订阅成功且最大QoS等级为2
取消订阅报文-Unsubscribe
取消订阅报文与订阅报文类型,包含一个Packet ID 和一个期望取消的主题过滤器列表,想要取消的Topic filter 需要与实际订阅的 Topic filter完全的文本匹配
Unsubscribe报文同样也有UNSUBACK报文进行响应,但是在MQTT 3.1.1没有Reason Codes原因码确认是否成功, 在MQTT 5.0里面进行补充,有对应Reason Codes