Node.js 节点js setinterval在connect上不与mqtt客户端一起工作
我有以下代码要每3秒发布到Node.js 节点js setinterval在connect上不与mqtt客户端一起工作,node.js,setinterval,mqtt,Node.js,Setinterval,Mqtt,我有以下代码要每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() {
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
publisheddate
消息
如果我删除setInterval
函数并改用client.publish(…)
,它只发布一次并退出
更新
在删除
client.end()
后,它将按预期工作。在client.on('message')
中,您需要删除client.end()
,因为mqtt在收到第一条消息时已完成。我认为Settawat Janpuk answer就是您要寻找的答案
但是,您也可以使用一个模块,使您以声明方式每隔x毫秒在mqtt上发布一次:
const mqttNow=require('mqtt-now');
常量选项={
主机:“localhost”,
间隔时间:500,,
行动:[
{
主题:"公众",,
信息:“messaggio”
},
{
主题:"随机",,
消息:()=>('random'+Math.random())
}
]
}
mqttNow.publish(选项);