MQTT协议理解
参考:https://blog.csdn.net/zhuo_lee_new/article/details/89138834
使用场景
MQTT协议是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布,广泛运用于机器与机器(M2M)通信和物联网(IoT)通讯中。
运行模式
MQTT协议中有三种角色:
- 代理
- 发布者
- 订阅者
发布者在某个主题下发布消息,代理会将这个消息分发给所有订阅这个主题的订阅者。就好比你关注了某个帖子,那么这个帖子的所有回帖你都会收到。这是种可以实现多对多通讯的方式。一般情况下,代理由服务器实现,客户端可以作发布者或者订阅者或者兼任两者。
重要参数
1.QOS
服务质量是 MQTT 的一个重要特性。当我们使用 TCP/IP 时,连接已经在一定程度上受到保护。但是在无线网络中,中断和干扰很频繁,MQTT 在这里帮助避免信息丢失及其服务质量水平。
QOS0:最多发一次消息,不管你有没有收到
QOS1:最少发一次消息,需要收到你的ack
QOS2:只发一次消息,并保证你收到
2.Client id
Connect报文必须的信息,broker用来区分不同的客户端。作为客户端可以不提供(clean session必须为true),broker会随机分配一个给它。
3.Keep alive
保活心跳
4.Clean session
此配置项如果为true,client端每次重连都会重新申请session,broker端就不能够判断出此设备是以前已经连接过的设备了.
如果配置为false,client端在上线并订阅主题后,broker会查找设备在离线时没有接收到的消息,视情况发送给client
5.retain
这个标志位被置位,代表要求服务器保留最新的这条消息,有新的订阅者连接时向他推送。
6.Will
遗嘱消息是是在发布者异常断开时发送给订阅者的消息。在建立与服务端的连接时约定好遗愿消息,服务端会存储这个消息,当发布者非正常断线时则会向约定好的主题发送遗愿消息。如果是发布者主动断开,则不会发will消息。