节点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在收到第一条消息时完成。