更改将在 mqtt 连接上

Change will on a mqtt connection

我们正在使用 mqtt.js (https://www.npmjs.com/package/mqtt) 客户端连接到 AWS IoT 服务。

我们可以连接没问题,用下面的代码传入 last will

var clientOptions = {
    will: {
        topic: "logout",
        payload: JSON.stringify({ _id: User.me._id, viewing: User.me.viewing })
    }
};  

client = mqtt.connect(signedUrl, clientOptions);

现在我想更新选项的 will 部分 -- 更改负载以获得新的视图 属性。

有没有办法在不断开连接和触发旧遗嘱的情况下更新遗嘱?

Last Will and Testament无法更改,只能在connect packet中设置。

但是最后的遗嘱和遗嘱应该只在客户端超时时触发,而不是在完全断开连接时触发。这意味着您应该能够告诉客户端断开连接并重新连接新的 LWT,而不会触发旧的 LWT 被发布。

如果您使用 clean session false 并订阅 QOS1 或更好,那么您在重新连接时不应错过任何消息,因为代理应排队并在重新连接时传送它们。