MQTT客户端正常“心跳”时,服务端就知道客户端“活着”,否则服务端就会发现客户端已经“死亡”(离线)。MQTT协议允许客户端“活着”的时候就写好“遗嘱”,如果客户端“异常死亡”(意外断线)服务器就把“遗嘱”消息送出(正常断开不公布遗嘱)。那么什么是意外断线呢? 1、正常断线时客户端会向服务端发送disconnect报文,服务端收到此disconnect报文就认为客户端是正常断开的,不是意外断线。 2、异常断线是指服务端没有收到disconnect报文,于此同时无法收到客户端的“心跳”,服务器认为客户端已经“死亡”也就是已经异常断线。 客户端遗嘱参数: 1、遗嘱主题,lastWillTopic 2、遗嘱消息,lastWillMessage 3、遗嘱Qos,0-1,-2 4、遗嘱保留,lastWillRetain 客户端遗嘱编程: 1、遗嘱保留设置lastWillRetain=True,遗嘱消息设置为offline 2、客户端成功链接后,立即获取到遗嘱消息online 3、客户端异常断线,服务端没有收到“心跳”,这时服务端发送“遗嘱”