MQTT-遗嘱信息(Will Flag)

正常断开链接 :如果客户端正常断开连接,会向服务器发送DISCONNECT报文,服务端接收到该报文后,就会知道,客户端是正常断开连接,而并非意外断开连接。

意外断开连接:通过心跳机制发现 (客户端未向服务器发送DISCONNECT报文)。

当服务端发现某一客户端发生了意外断开,服务端就会向订阅了该客户端遗嘱信息的客户端发布遗嘱信息。

遗嘱信息内容在CONNECT报文中由四部分组成:

主题lastWillTopic;

Qos等级lastWillQos;

消息内容lastWillMessage;

保留标志 lastWillRetain : 设置为真,客户端订阅后马上就会收到设置的遗嘱信息;设置为假的话,发布遗嘱信息的客户端发生意外断开之后,订阅了该客户端遗嘱信息的客户端才可收到遗嘱消息。

MQTT遗嘱操作

假设我们现在有一台MQTT客户端A。在使用MQTT遗嘱时,它的client id是test-1它的遗嘱主题是“test-1-will”。

  1. 当test-1连接服务端时,CONNECT报文中的遗嘱消息的内容是“offline”。并且它的遗嘱保留设置为 false。
  2. 当test-1成功连接服务端后,立即向遗嘱主题“test-1-will”发布一条消息“online”。同时在发布此消息时,如果保留标志设置为true。此时,只要test-1在线,那么任何设备一订阅“test-1-will”都能收到设备在线的消息“online”。
  3. 如果test-1发生意外离线,那么任何设备一订阅“test-1-will”就会收到设备离线的消息“offline”。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章