代码之家  ›  专栏  ›  技术社区  ›  AlexKogan

将在mqtt连接上进行更改

  •  1
  • AlexKogan  · 技术社区  · 6 年前

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

    我们可以毫无问题地连接,并用以下代码传递最后的遗嘱

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

    现在我想更新选项的will部分——更改有效负载以具有新的查看属性。

    有没有一种方法可以在不中断和触发旧遗嘱的情况下更新遗嘱?

    1 回复  |  直到 6 年前
        1
  •  1
  •   hardillb    6 年前

    没有办法改变最后的遗嘱和遗嘱,它只能在connect数据包中设置。

    但是,最后的遗嘱应该只在客户超时时生效,而不是在完全断开连接的情况下生效。这意味着您应该能够告诉客户端断开并重新连接新的LWT,而无需触发旧的LWT进行发布。

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

    推荐文章