-2

我已经在 2 个不同的应用程序中使用 NodeJs 设置了 mosquitto 和使用 NodeJs 的 EMQX。我想在我的两个 MQTT 客户端之间创建一个桥梁,并从两端发送和接收值。

尝试在我的 MQTT npm 包中使用 WebSocket 选项创建桥接器。

var client = mqtt.connect('mqtt://test.mosquitto.org', {
  clientId: 'mqttjs_6fa3a7ee3d',
  wsOptions: {
  host: '100.84.81.28',
  port: 8083,
  path: '/mqtt'
}
});  

我的 EMQ 与 NodeJs 的连接。

var client = mqtt.connect('ws://100.84.81.28:8083/mqtt');
4

1 回答 1

0

正如评论中所说,网桥是您必须在代理中配置的东西,而不是客户端。

以下将不起作用,您已告诉客户端库使用带有mqtt://url 前缀的本机 MQTT 连接到代理。这意味着它将完全忽略wsOptions设置对象中的块。

var client = mqtt.connect('mqtt://test.mosquitto.org', {
  clientId: 'mqttjs_6fa3a7ee3d',
  wsOptions: {
  host: '100.84.81.28',
  port: 8083,
  path: '/mqtt'
}
}); 

此外,您不能让客户端尝试一次连接到 2 个单独的代理(您可以有 2 个单独的客户端实例)。

要配置网桥,您需要查看mosquitto.conf文档,您需要运行自己的 mosquitto 实例,您不能使用 test.mosquitto.org,因为您无法更改它的配置。桥接需要使用本机 MQTT,而不是 MQTT over websockets。

于 2018-11-08T13:27:21.133 回答