使用nodejs lib断开与其他代理的连接后连接到mqtt代理

时间:2017-12-08 06:16:40

标签: node.js mqtt

我想要实现的方案是,首先我的服务将连接到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

1 个答案:

答案 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(){
   ...
   })
}})