node.js - 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() {
        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/

相关文章:

python - 树莓派导致未定义错误awsiot mqtt

javascript - JS不能改变变量

node.js - 在nodejs中运行Neo4j查询返回 "undefined"

javascript - Nodejs Mysql回调中的回调

javascript - “多线程”setInterval 函数 (Javascript)

python - 即使我的 MQTT 客户端未连接,我如何继续我的程序运行?

javascript - MQTT 客户端不工作

node.js - 对网站图标静态图像的哈希进行 Mocha 测试失败

javascript - 如何检查变量是否已更改以及它是否大于存储它

javascript - setInterval 不同间隔之间的性能影响