MQTT.js: 如何在连接尝试失败后关闭/连接到另一个代理? (用于使用桥接蚊子)
MQTT.js: How to close / connect to another broker after failed connection attempt? (for using bridged mosquitto)
我确实设置了两个支持 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");
});
关于如何关闭连接并连接到下一个连接有什么想法吗?
(请不要关心自定义 ConsoleLog 函数)
您不需要实施故障转移,它已内置到模块中:
来自 mqtt.js 文档 (https://github.com/mqttjs/MQTT.js#connect)
You can also specify a servers options with content: [{ host:
'localhost', port: 1883 }, ... ], in that case that array is iterated
at every connect.
因此,您将 connect
方法选项对象传递给一个名为 servers 的键,它是要连接到的代理数组。
client = mqtt.connect({
servers: [
{
host: 'firstbroker.ip',
port: 9001,
protocol: 'ws'
},
{
host: 'secondbroker.ip',
port: 9001,
protocol: 'ws'
}
]
});
我确实设置了两个支持 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");
});
关于如何关闭连接并连接到下一个连接有什么想法吗? (请不要关心自定义 ConsoleLog 函数)
您不需要实施故障转移,它已内置到模块中:
来自 mqtt.js 文档 (https://github.com/mqttjs/MQTT.js#connect)
You can also specify a servers options with content: [{ host: 'localhost', port: 1883 }, ... ], in that case that array is iterated at every connect.
因此,您将 connect
方法选项对象传递给一个名为 servers 的键,它是要连接到的代理数组。
client = mqtt.connect({
servers: [
{
host: 'firstbroker.ip',
port: 9001,
protocol: 'ws'
},
{
host: 'secondbroker.ip',
port: 9001,
protocol: 'ws'
}
]
});