我有以下代码每 3 秒发布到 MQTT 代理
,但它不起作用:
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 在收到第一条消息时就完成了。
关于node.js - Node js setinterval 在连接时无法与 mqtt 客户端一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31041200/