节点js setinterval不能与mqtt客户端连接

我有下面的代码发布到MQTT broker每3秒,但它不工作:

 var mqtt = require('mqtt'); var client = mqtt.connect('mqtt://test.mosquitto.org'); var topic = 'test-topic'; client.on('connect', function () { client.subscribe(topic); setInterval(function() { client.publish(topic, Date.now().toString()); console.log('hello'); }, 3000); }); client.on('message', function (topic, message) { // message is Buffer console.log(message.toString()); client.end(); }); 

我可以看到每3秒打印出一个hello消息,但不能发布我的mqtt发布的date消息。

如果我删除setInterval函数并使用client.publish(...) ,它只发布一次并退出。

更新

删除client.end() ,它按预期工作。

client.on('message')您需要删除client.end()因为mqtt在收到第一条消息时完成。