上一节我们使用了网络调试助手来作为一个客户端,通过手动的方式连接Mqtt服务器以及发布消息。这一节我们继续来讲mqtt协议的消息发布。
首先呢来说说消息的服务质量,也就是Qos,即:保证消息传递的次数。
Qos有三种:
00:最多一次,即:<=1
01:至少一次,即:>=1
10:一次,即:=1
11:预留
上一次我们使用了00,也就是说最多发送一次,所以消息发出去后服务器并不会返回数据,这种方式虽然方便,但是有明显的缺陷,那就是数据未必会到达服务器端,所以只适用于对数据要求不高的情况,丢几个数据影响也不大的项目。这次我们来说说另外两种情况。
(1)QoS=00
首先来回顾一下上一节的两个指令,首先发送mqtt服务器连接指令:
10 19 00 06 4d 51 49 73 64 70 03 c2 01 2c00 05 4d 61 6b 65 72 00 01 72 00 01 72
待服务器返回20 02 00 00后发送:
30 04 00 01 73 68
第一个字节30对应的二进制位0011 0000
0011就是Publish(发布)消息。
0000就是QoS为00(中间两位),只发送一次。Dupflag(第一位)和Retain(最后一位)都设置为0,具体含义自己看前面的解释。