使用 NodeJS 在 mosquitto MQTT 和 EMQX 之间建立桥梁

Creating a bridge between mosquitto MQTT and EMQX using NodeJS

我已经在 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');

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

以下将不起作用,您已告知客户端库使用带有 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,而不是基于 websockets 的 MQTT。