我确实设置了两个带有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功能)
答案 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'
}
]
});