MQTT 遗嘱消息(Will Message)
阅读数:155 评论数:0
跳转到新版页面分类
网络/通信
正文
一、简介
1、使用场景
当客户端A进行连接时候,遗嘱消息设定为“offline”,客户端B订阅这个遗嘱主题。当A异常断开时,客户端B会收到这个“offline”的遗嘱消息,从而知道客户端A离线了。
2、connect flag 报文字段
Bit | 7 | 6 | 5 | 4 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
User Name Flag | Password Flag | Will Retain | Will QoS | Will Flag | Clean Start | Reserved | |
byte 8 | X | X | X | X | X | X | X |
遗嘱消息在客户端正常调用disconnect方法之后并不会被发送。
简而言之,就是客户端预先定义好,在自己异常断开的情况下,所留下的最后遗愿(Last Will),也称之为遗嘱(Testament)。这个遗嘱就是一个由客户端预先定义好的主题和对应消息,附加在CONNECT的可变报文头部中,在客户端连接出现异常的情况下,由服务器主动发布此消息。
当Will Flag位为1时,Will QoS和Will Retain才会被读取,此时消息体中要出现Will Topic和Will Message具体内容,否则Will QoS和Will Retain值会被忽略掉。
当Will Flag位为0时,则Will Qos和Will Retain无效。
二、高级使用场景
1、客户端A遗嘱消息设定为“offline”,该遗嘱主题设定为A/status
2、当客户端A连接时,向主题A/status发送“online”的retained消息,其它客户端订阅主题A/status的时候,获取retained消息为"online"
3、当客户端A异常断开时,系统自动向主题A/status发送“offline”的消息,其它订阅了此主题的客户端会马上收到offline消息。如果遗嘱消息被设定了retained的话,这时有新的订阅a/status主题a/status主题的客户上线的时候,获取到的消息为offline。
相关推荐
1、HTTP
HTTP协议是典型的CS通迅模式,由客户端主动发起连接,向服务器请求XML或JSON数据。在物联网场景有有其弊端:
(1)难以主动向设备推送数据。
(2)消息头开销大。
2、webs
一、概述
MQTT(Message Queuing Telemetry Transport Protocal)是一个客户端服务端的发布订阅模式的消息传输协议,适用于机器与机器的通信(M2M)以及物联网