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

时间:2016-05-08 20:57:30

标签: javascript angularjs mqtt

我写了一个angularjs应用程序。有一个表单,用户可以在其中键入备注。该应用程序使用特定的mqtt主题,如“app / form / notes”。此应用程序中的paho js客户端发布并订阅相同的主题。如果用户输入了somthing,则会发生onchange事件并将新值发布到主题。

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

2 个答案:

答案 0 :(得分:1)

在邮件中包含客户端ID,因此当邮件到达时,可以很容易地将其标识为在本地发起并且可以忽略。

e.g。

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

答案 1 :(得分:1)

如果您发现自己正在订阅要发布的同一频道,则可能会对您的主题结构执行某些操作,而不是这样。例如,如果您遵循本文中建议的语义MQTT主题命名:http://tinkerman.cat/mqtt-topic-naming-convention/,您会发现很多这类问题都会消失。如果您是温度传感器,则需要关注发布温度,而不是订阅温度传感器。

如果你已经在语义上命名了,并且你有一个很讨厌的主题,许多玩家都是在发布和分发,那么一些经纪人会自动将发布者添加到MQTT消息中,如果他们不要,将其添加到有效负载。这显然很容易欺骗,所以不要依赖发布者身份对任何敏感交易都是正确的。