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

Javascript mqtt发布和订阅同一主题的最佳实践,javascript,angularjs,mqtt,Javascript,Angularjs,Mqtt,我已经编写了一个angularjs应用程序。有一个表单,用户可以在其中键入注释。应用程序使用特定的mqtt主题,如“app/form/notes”。此应用程序中的paho js客户端发布并订阅同一主题。如果用户正在键入某个内容,则会发生onchange事件并将新值发布到主题 现在客户机正在接收他发送给代理的消息,因为他订阅了这个主题。但是收到的消息是无用的,因为值是相同的。处理此问题的最佳方法是什么?在消息中包含一个带有的客户端id,这样当消息到达时,可以很容易地将其标识为源于本地,并且可以忽略

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


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

在消息中包含一个带有的客户端id,这样当消息到达时,可以很容易地将其标识为源于本地,并且可以忽略

e、 g


在消息中包含带有的客户端id,这样当消息到达时,可以很容易地将其标识为源于本地,并且可以忽略

e、 g


如果您发现订阅的频道与发布的频道相同,那么您可以对主题结构做一些更改,以避免出现这种情况。例如,如果您遵循本文中建议的语义MQTT主题命名:您将发现这些类型的问题中有很多都消失了。如果你是一个温度传感器,你关心的是公布你的温度,而不是订阅它


如果您已经被语义命名,并且您有一个很多玩家都在发布和订阅的聊天主题,一些代理会自动将发布者添加到MQTT消息中,如果没有,则将其添加到有效负载中。这显然很容易进行欺骗,因此,对于任何敏感交易,都不要依赖发布者身份是正确的。

如果您发现您订阅的频道与您发布的频道相同,您可以对您的主题结构进行一些更改,以使其不正确。例如,如果您遵循本文中建议的语义MQTT主题命名:您将发现这些类型的问题中有很多都消失了。如果你是一个温度传感器,你关心的是公布你的温度,而不是订阅它

如果您已经被语义命名,并且您有一个很多玩家都在发布和订阅的聊天主题,一些代理会自动将发布者添加到MQTT消息中,如果没有,则将其添加到有效负载中。这显然很容易进行欺骗,因此不要依赖于发布者身份对任何敏感事务都是正确的

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