您好,设备离线的逻辑是云端判定心跳超时逻辑,每个连接都维持着一个最近活跃时间,任何mqtt上行报文都会刷新这个最近活跃时间。云端如果检测到一个连接的最近活跃时间与当前时间的差值,大于1.5倍的心跳时间,就会判定这个连接心跳超时,从而将这个设备踢下线。
例如,设备端连接时设置的心跳时间是60秒,那么设备端应用如果60秒被没有发业务报文,设备端sdk就应该自动发送一个ping报文。而对于云端来说,如果90秒内没有收到设备端的任何报文,就会将设备踢下线。
备注:目前云端的实际实现逻辑,是每隔30秒去检查下当前机器上的所有连接,所以实际的时间还会加上0~30秒。对于上面的例子,目前实际会经过90~120秒后将设备踢下线。订阅的时间也是一样的,要云端判定下线之后,才会订阅到这个消息
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。