Nodejs MQTT:在收到消息后设置超时

Nodejs MQTT:在收到消息后设置超时

问题描述:

在MQTT第一次接收消息后,我想设置超时大约1分钟。如果1分钟内没有更多消息,我想通知一些事情。有什么办法可以做到吗?Nodejs MQTT:在收到消息后设置超时

client.on('message', function (topic, message) { 
    // if in one minute timeout, there is no more message 
    // console.log("warning") 
} 
+0

你已经试过了什么? – hardillb

+0

我试图把一个settimeout func放在client.on()外部的回调函数中,但它没有像我期望的那样工作 –

+1

然后编辑问题以显示你所尝试的内容,并描述它做了什么与你想要什么以及有人会帮助你解决它。 – hardillb

Client.on()函数只会在收到消息时触发。 setInterval()函数可以在外面使用,它会在一秒钟后继续运行。现在计算秒,当它变成一分钟时,你可以通知一些事情。不要忘记在接收到消息或变为一分钟时初始化计数器。

以下代码将检测一分钟内是否收到任何消息。

var i = 1 
client.on('message', function (topic, message) { 
console.log(message.toString()) 
i=1 
}) 

setInterval(function(){ 
i++ 
if(i==60) 
{ 
console.log("No Msg"); 
i=1; 
} 
},1000)