我有多个4G设备,有时候无缘无故掉线了都不知道,我就是想用mqtt怎么判断离线还是在线状态
下面是我这写的判断,可是一直有个问题就是我离线的设备写入的值还是离线,可是我在线的设备总是在“在线”和“离线”中不停的切换赋值
client.on('message', (topic, payload) => { //topic:消息标题 payload:消息内容
let sKey = topic.split('/')[2]
let bxData = thas.data.bxData
// console.log("设备",sKey)
for(var i=0;i<bxData.length;i++){
if (bxData[i].IMEI == sKey){
thas.setData({
['bxData[' + i + '].zhuangtai']:"在线",
['bxData[' + i + '].mqttData']:JSON.parse(payload)
})
}else{
thas.setData({
['bxData[' + i + '].zhuangtai']:"离线",
})
}
}
})
第一:用遗嘱功能,可以判断是否离线,【备注:中转站不能停,停止可能会漏掉部分设备的遗嘱】。
第二:用设备心跳包,你设置一个时间判断多长没有心跳包就离线