我想要实现的方案是,首先我的服务将连接到mqtt代理,当我从will主题收到消息时,我想将它与我的mqtt客户端连接的代理断开连接并连接到其他一些broker.is可以使用nodejs库吗?
var mqtt = require('mqtt')
var client = mqtt.connect('mqtt://192.168.100.3')
client.on('connect', function () {
console.log("connected to broker")
client.subscribe('mqtt_node_subscribe')
client.publish('mqtt_node_publish', 'Hello mqtt')
})
client.on('close',function(){
console.log("connection closed")
})
client.on('message', function (topic, message) {
// message is Buffer
console.log("message arrived")
client.end()
client = mqtt.connect('mqtt://192.168.100.14')
}})
在断开控制台消息后,我能够断开与当前代理的连接但无法连接到另一个代理:
connected to broker
message arrived
connection closed
答案 0 :(得分:1)
您正在替换客户端对象,因此您需要重新创建所有事件处理程序
e.g。
client.on('message', function (topic, message) {
// message is Buffer
console.log("message arrived")
client.end()
client = mqtt.connect('mqtt://192.168.100.14');
client.on('connect', function () {
...
});
client.on('close',function(){
...
})
}})