订阅者在mqtt中订阅主题时查找发布者ID

时间:2018-01-05 06:25:37

标签: node.js mqtt publish-subscribe

我在我的nodejs支持的应用程序中使用mqtt,其中有与iot设备的通信,并且我能够发布和订阅不同的主题。每件事都运行良好我可以发布和订阅不同的主题。

我能够发送客户ID或发布者ID,他们在消息部分发布主题,这是每个发布者的重复任务。

在订阅主题时,我们是否有任何方式可以知道谁是发布者。 我在nodejs的mqtt客户端代码是

  var mqtt = require('mqtt')

  var url = "http://127.0.0.1:1883";

  var client = mqtt.connect(url);

client.on('connect', () => {
   console.log('Mqtt client connected to broker');
   client.subscribe('status/open');
   client.subscribe('status/close');
   client.subscribe('sendMsg');

})

client.on('message', (topic, message) => {
  console.log('new topic received at controller', topic);
  console.log('new messge received at controller', message.toString());
///is there any way to determine who is publishere here

 });

1 个答案:

答案 0 :(得分:0)

没有

这违反了发布/订阅消息传递的核心原则之一,即发布者不应该关心订阅某个主题的用户,订阅者也不应该关心数据的来源,它只是订阅了一个主题。

如果你想说清楚,你有两个选择。

  1. 使用对主题中的发布者进行编码的主题结构,订阅者使用通配符主题接收来自所有发布者的数据。
  2. 将发布商信息编码到消息有效内容中。