设备成功登陆上m2m服务器后,设备再掉线,通常是由于网络不稳定或设备长时间没有向m2m服务器发送心跳导致的。
关于心跳。设备登陆m2m服务器的时候(MQTT CONNECT),需要由设备指定一个心跳时间间隔(KeepAlive)。之后设备必须定期在这个心跳时间间隔内向m2m服务器发送心跳请求(MQTT PINGREQ),服务器收到心跳请求后会回复心跳响应(MQTT PINGRESP),否则服务器会认为设备已不在线了并主动断开该设备的连接。
心跳时间间隔(KeepAlive)建议设为60秒到600秒之间,设备定期发送心跳的时间间应小于KeepAlive的值(如KeepAlive - 10s),因为这样可以保证这个心跳请求在心跳间隔时间内有足够的时间通过网络传送到服务器。 如设备在心跳时间间隔内不停有数据发往m2m服务器,可以不用再显式发送心跳,以节省网络开销。
|