2017-10-28 99 views
1

在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

回答

2

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)