我写了一个angularjs应用程序。有一个表单,用户可以在其中输入notes。该应用程序使用特定的mqtt主题,如“app/form/notes”。该应用程序中的paho js客户端发布和订阅相同的主题。如果用户输入了什么,则会发生onchange事件并将新值发布到主题。
现在客户端正在接收他发送给经纪人的消息,因为他订阅了这个主题。但是接收到的消息是无用的,因为值是相同的。处理这个问题的最佳方法是什么?
我写了一个angularjs应用程序。有一个表单,用户可以在其中输入notes。该应用程序使用特定的mqtt主题,如“app/form/notes”。该应用程序中的paho js客户端发布和订阅相同的主题。如果用户输入了什么,则会发生onchange事件并将新值发布到主题。
现在客户端正在接收他发送给经纪人的消息,因为他订阅了这个主题。但是接收到的消息是无用的,因为值是相同的。处理这个问题的最佳方法是什么?
2条答案
按热度按时间baubqpgj1#
如果你发现你订阅的是你发布的同一个频道,你可以对你的主题结构做些什么来改变这种情况。例如,如果你遵循这篇文章中建议的语义MQTT主题命名:http://tinkerman.cat/mqtt-topic-naming-convention/你会发现很多这类问题都消失了。如果你是一个温度传感器,你关心的是发布你的温度,而不是订阅它。
如果你已经在语义上命名了,并且你有一个很多玩家都在发布和订阅的聊天主题,一些代理会自动将发布者添加到MQTT消息中,如果没有,将其添加到有效负载中。这显然很容易欺骗,所以不要依赖发布者身份对任何敏感事务都是正确的。
pu3pd22g2#
在消息中包括客户端id,以便当消息到达时,可以很容易地将其标识为源自本地并且可以忽略。
例如