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)以及物联网

一、主题的定义与规范 1、UTF-8编码 2、至少包含一个字符 3、大小写敏感 4、可以包含空格 5、只包含斜杠是合法的