emqx在5.4.1版本 遗嘱消息接收正常,升级了5.6.0后,在客户端没有异常断开的情况下也会收到遗嘱消息,不知道是什么原因?
你好,这应该是由于我们在 https://github.com/emqx/emqx/pull/11868 修改来遗嘱消息的实现导致的。
When an existing MQTT session is taken over by a new connection reusing the same client ID, the will message for the prior connection is not being published. This was tested using MQTT 3.1.1 clients and EMQX 5.0.19.
在这次修改中,我们规范的实现了,协议条款:
(a.) MQTT-3.1.2-8
(b.) MQTT-3.1.2-10
(c.) MQTT 3.1.3-9
(d.) MQTT-3.1.4-3
(e.) MQTT-3.14.4-3
(f.) ch 3.1.3.2.2
即:设备链接的Session在被另外一个同ClientId重用时;前一个链接的Will消息应该被发布才对