Node.js 节点mqtt为什么我三次获得发布的消息

Node.js 节点mqtt为什么我三次获得发布的消息,node.js,mqtt,Node.js,Mqtt,只是在玩mqtt 和mosca节点模块 server.js client.js 如果我在服务器控制台中运行client.js 我可以看到:三次 不仅仅是 已发布:缓冲区43 Mosca服务器已启动并正在运行 客户端连接的mqttjs_bc22cc7a 出版:mqttjs_bc22cc7a 订阅:出席 出版:mqttjs_bc22cc7a 出版: 取消订阅:出席 clientDisconnected:mqttjs_bc22cc7a 如果在server.js中更改此行: console.log(

只是在玩mqtt 和mosca节点模块

server.js client.js 如果我在服务器控制台中运行client.js 我可以看到:三次 不仅仅是

已发布:缓冲区43

Mosca服务器已启动并正在运行
客户端连接的mqttjs_bc22cc7a
出版:mqttjs_bc22cc7a
订阅:出席
出版:mqttjs_bc22cc7a
出版:
取消订阅:出席
clientDisconnected:mqttjs_bc22cc7a

如果在server.js中更改此行:

  console.log('Published: ', packet.payload);
……关于这一点:

  console.log('My Published: ', packet.payload);
…那么我猜您仍然会看到相同的日志输出。标记为“Published:”的日志可能来自mqtt本身的节点_模块,而不是您的代码。通过更改自己的日志记录,您可以确认这一点


还有。。。我想你经常看到两个客户使用这个协议。一个订阅,一个发布。这里有一个很好的教程,顺便说一句。

您正在记录客户端发送给服务器的所有消息,而不仅仅是“发布”消息。如果您只需要这些消息,您可以使用:

server.on('published', function(packet, client) {
  if (packet.cmd === 'publish') {
    console.log('Published: ', packet.payload);
  }
});

我摆脱了发表的我的:只是为了这篇文章,所以这不是事实,但感谢你的回复。好,好。。。将来可以将其视为故障排除步骤。这些模块中的一些模块自己进行日志记录,您需要将您的模块与它们的模块区分开来。
  console.log('Published: ', packet.payload);
  console.log('My Published: ', packet.payload);
server.on('published', function(packet, client) {
  if (packet.cmd === 'publish') {
    console.log('Published: ', packet.payload);
  }
});