npm mqtt模块只是保持运行而不做任何事情?

时间:2018-03-26 04:17:38

标签: javascript node.js npm mqtt

我在整个JS和node.js和npm中都是新手,我试图在一个类的项目中使用mqtt代理,所以我从npm安装了mqtt模块并给了我一个想法它是如何工作的我在npm页面中运行了这个例子,但它似乎不起作用,它只是挂起而没有打印“hello mqtt”它说它应该?我确定我错过了什么,但我真的不知道是什么。 代码是:

var mqtt = require('mqtt')
var client  = mqtt.connect('mqtt://test.mosquitto.org')

client.on('connect', function () {
  client.subscribe('presence')
  client.publish('presence', 'Hello mqtt')
})

client.on('message', function (topic, message) {
  // message is Buffer
  console.log(message.toString())
  client.end()
})

我从中得到的页面是https://www.npmjs.com/package/mqtt

我也试过使用我自己的经纪人,但它也没有用。

1 个答案:

答案 0 :(得分:0)

这可能是很多事情,但最有可能的是你没有连接到经纪人。

示例代码根本没有错误处理,因此它无法告诉您何时无法连接。请尝试以下代码,该代码应该告诉您正在进行的操作。

var mqtt = require('mqtt')
var options = {
  connectTimeout: 10000

};

var client  = mqtt.connect('mqtt://test.mosquitto.org',options)

client.on('connect', function () {
  console.log("connected");
  client.subscribe('presence')
  client.publish('presence', 'Hello mqtt')
})

client.on('error', function(err){
  console.log("error %j", err);
});

client.on('close',function(){
  console.log("client disconnected");
});

client.on('message', function (topic, message) {
  // message is Buffer
  console.log(message.toString())
  client.end()
})

我已将连接超时从默认值30下降到10秒,因此您可以更快地看到它失败。