如何在节点 js 上动态填充 MQTT 主题列表

How to populate MQTT topic list dynamically on node js

我正在使用 mqtt-node 来获取订阅的消息。但问题是订阅的主题列表将通过 API 附加。但是在订阅其他主题时,mqtt 连接不会读取附加的主题列表。请建议或建议解决此问题的合适方法。

没有主题列表。

发现正在使用哪些主题的唯一方法是维护代理外部的列表或订阅通配符并查看发布了哪些消息。

重要的是要记住,主题只有在消息发布给一个人的那一刻才真正存在。订阅者提供一个模式列表(它们可以包括 +# 等通配符)以匹配那些已发布的主题,并传递任何匹配的消息。

您维护一个主题数组

var topics = [
  "test/1",
  "test/2",
  "test/3"
]

当新主题通过 API 到达时,您需要先取消订阅现有主题

client.unsubscribe(topics)

然后添加新主题

topics.push(newTopic)

然后 re-subscribe

client.subscribe(topics)

当我有这个用例时,这是最适合我的方法。

请记住,在取消订阅和 re-subscribing 之间的时间里,消息可能会被发布,您的客户不会因为当时没有订阅而看到它们。如果您可以在 Publishers 上使用 RETAIN 字段,这很容易克服....但在某些用例中,这是不切实际的。