mqtt的报文目前一共14种,分别是:
- 1 CONNECT – 连接服务端
- 2 CONNACK – 确认连接请求
- 3 PUBLISH – 发布消息
- 4 PUBACK –发布确认
- 5 PUBREC – 发布收到(QoS 2,第一步)
- 6 PUBREL – 发布释放(QoS 2,第二步)
- 7 PUBCOMP – 发布完成(QoS 2,第三步)
- 8 SUBSCRIBE - 订阅主题
- 9 SUBACK – 订阅确认
- 10 UNSUBSCRIBE –取消订阅
- 11 UNSUBACK – 取消订阅确认
- 12 PINGREQ – 心跳请求
- 13 PINGRESP – 心跳响应
- 14 DISCONNECT –断开连接
在客户端和服务端传递消息的是:publish,puback,pubrec,pubrel,pubcomp,通过下面几个图片,可以大体解释其中的通信过程。
注意:根据qos等级,接收到publish报文端是否需要给予响应。
这里补充一下qos:
qos0:最多就发送一次,你别告诉我你收没收到,你找到订阅这个主题的你就推就行。
qos1:至少发送一次,发送完你告诉我你收没收到(PUBACK),如果你不告诉我,我就一直发。
qos2:确保一次送达,我给你发(PUBLISH),你给我回一个你收到了(PUBREC),我再给你发一个你确定你收到了吗(PUBREL),你再给我回一个收到了别发了求你了(PUBCOMP)