Node.js 订阅服务器在mqtt中订阅主题时查找发布服务器id

Node.js 订阅服务器在mqtt中订阅主题时查找发布服务器id,node.js,mqtt,publish-subscribe,Node.js,Mqtt,Publish Subscribe,我在nodejs支持的应用程序中使用mqtt,在该应用程序中可以与物联网设备进行通信,并且可以发布和订阅不同的主题。每件事情都很好,我可以发布和订阅不同的主题 我能够发送在消息部分发布主题的客户端id或发布者id,这是每个发布者的重复任务 在订阅主题时,我们是否可以知道谁是发布者。 我在nodejs的mqtt客户机代码是 var mqtt = require('mqtt') var url = "http://127.0.0.1:1883"; var client = mqtt.

我在nodejs支持的应用程序中使用mqtt,在该应用程序中可以与物联网设备进行通信,并且可以发布和订阅不同的主题。每件事情都很好,我可以发布和订阅不同的主题

我能够发送在消息部分发布主题的客户端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

 });
没有

这与发布/订阅消息的一个核心原则背道而驰,即发布者不应该关心谁订阅了给定的主题,订阅者不应该关心数据来自何处,它只订阅了一个主题

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

  • 使用主题结构对主题中的发布服务器进行编码,订阅服务器使用通配符主题从所有发布服务器接收数据
  • 将发布者信息编码到消息负载中

  • 请详细说明我如何对出版商的主题进行编码。如果您这样做,我将不胜感激。类似于
    status//open
    和订阅
    status/+/open