贝壳物联保持长期在线、断网重连的讨论

作者:贝壳物联 | 更新时间:2016-12-08

设备稳定在线,是设备实时接收控制和上传数据(UDP和http协议除外)的基础,也是大家经常遇到和讨论问题,所有单独在此讨论,只做理论和机制说明,希望大家有好的经验和建议多多分享。

一、设备与服务器的关系说明

1、无连接状态——设备和服务器未发生任何关系;

2、连接状态——设备端已与服务器建立tcp连接,在建立连接后设备端将收到服务器发来的{"M":"WELCOME TO BIGIOT"}\n欢迎信息;

3、登录状态——设备端与服务建立连接后发送checkin指令,并收到checkinok确认登录成功,此时设备显示在线状态;

二、服务器不同端口特点

1、TCP 8181 端口

此端口不向设备端发送心跳包,需设备端主动向服务报到,80s内服务器未收到客户端发来有效数据将主动关闭连接。

设备端可根据网络情况每隔30-60s向服务器发一次有效数据(符合通信协议的数据)。

此端口适合连续发送实时数据的设备。

2、TCP 8282 端口

此接口理论上每40s向设备端发送一个心跳包{"M":"b"}\n,询问设备是否在线,设备端就进行有效应答,如果连续两次没有应答服务器将关闭连接。

服务器端为了节省资源,并非平均每40s发送一次心跳包,而是以你最后一次发送有效数据后的60s左右发送一次心跳包,在这次心跳后没有收到设备端应答,将在40s后发第二次,如果还未收到应答,将关闭连接。

此端口适合被动接受控制的设备。

3、websocket 8383 端口

 

三、掉线情况分析

1、服务器主动断开连接

2、设备端断电

3、设备端断网

①与路由器断开连接

②路由器与通信服务商断开连接

4、设备端主动checkout

①自己checkout自己

②checkout其他设备


评论:共0条

评论支持使用[code][/code]标签添加代码
返回顶部