MQTT.js:如何在连接尝试失败后关闭/连接到另一个代理? (用于使用桥接蚊子)

时间:2017-03-31 12:09:00

标签: javascript node.js mqtt mosquitto broker

我确实设置了两个带有websocket支持的mosquitto代理,并且能够通过mqtt.js

连接到它们

现在我尝试使用一系列可能的mqtt代理实现一个故障证明版本,应该尝试按顺序连接到成功连接。如果连接失败,应该尝试下一个代理...到目前为止一切都很好,但如果我尝试连接到离线代理,不知怎的mqtt.js尝试无休止地重新连接。我无法关闭连接尝试并连接到下一个连接尝试。

var client = mqtt.connect("ws://firstbrokerip:9001");

client.on('connect', function() {
	//consoleLog("[BROWSER] MQTT js-Client:"," Connected","green");
	client.subscribe("testchannel");	
});

client.on('offline', function() {
	//consoleLog("[BROWSER] MQTT js-Client:", ' Offline',"red");
  client.end();
	client = mqtt.connect("ws://secondbrokerip:9001");
});

关于如何关闭连接并连接到下一个连接的任何想法? (Plz不关心自定义ConsoleLog功能)

1 个答案:

答案 0 :(得分:0)

您无需实施故障转移,它已融入模块:

来自mqtt.js doc(https://github.com/mqttjs/MQTT.js#connect

  

您还可以使用内容指定服务器选项:[{host:   'localhost',port:1883},...],在这种情况下,该数组被迭代   在每一次连接。

因此,您使用名为servers的密钥传递connect方法选项对象,该密钥是要连接的代理数组。

client = mqtt.connect({
  servers: [
    {
      host: 'firstbroker.ip',
      port: 9001,
      protocol: 'ws'
    },
    {
      host: 'secondbroker.ip',
      port: 9001,
      protocol: 'ws'
    }
  ]
});