mqtt发布和订阅同一主题的最佳实践

mqtt best practice for publish and subscribe to same topic

本文关键字:最佳 mqtt      更新时间:2023-09-26

我已经编写了一个angularjs应用程序。有一个表单,用户可以在其中键入注释。该应用程序使用特定的mqtt主题,如"app/form/notes"。该应用程序中的paho js客户端发布并订阅同一主题。如果用户正在键入某个内容,则会发生onchange事件,并将新值发布到主题。

现在,客户端正在接收他发送给代理的消息,因为他订阅了这个主题。但是接收到的消息是无用的,因为值是相同的。处理这个问题的最佳方法是什么?

如果你发现你订阅的频道与你发布的频道相同,你可以对你的主题结构做一些事情来使其不那么重要。例如,如果你遵循本文中建议的语义MQTT主题命名:http://tinkerman.cat/mqtt-topic-naming-convention/你会发现很多这样的问题都消失了。如果你是一个温度传感器,你关心的是公布你的温度,而不是订阅它

如果您已经在语义上进行了命名,并且您有一个很多参与者都在发布和细分的聊天主题,那么一些代理会自动将发布者添加到MQTT消息中,如果没有,则将其添加到有效负载中。这显然使得欺骗变得很容易,所以对于任何敏感事务,都不要依赖发布者身份的正确性。

在消息中包含一个客户端id,这样当消息到达时,就可以很容易地将其识别为源自本地,并且可以忽略。

例如

{
  'source': 'client1',
  'payload': 'asdfghjklqwertyuiop...'
}