一、基础知识
    1、什么是TCP长连接
    所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接,一般需要自己做在线维持(不发生RST包和四次挥手)。
    2、连接流程
    连接→数据传输→保持连接(心跳)→数据传输→保持连接(心跳)→……→关闭连接(一个TCP连接通道多个读写通信);
    这就要求长连接在没有数据通信时,定时发送数据包(心跳),以维持连接状态。
    3、TCP长连接通讯的构成
    要实现设备与云端保持TCP通讯,需要在设备监理TCP通讯客户端,在云端服务器建立TCP通讯服务端。客户端按照服务端提供的TCP通讯的IP(或者域名)及端口号,与云端TCP通讯服务器建立TCP连接,并且根据约定由客户端(也可以是由服务端)以心跳数据包来维持连接。
    二、故障排查
    1、无法通讯故障排查
    通过上面的原理部分我们知道TCP通讯,需要在客户端(设备端)与服务端(云端服务器)之间建立以心跳维持的长时间通讯。当云端与设备端无法通讯时,可以通过以下流程来判断
    2、刚开机时可以正常通讯,几分钟后无法通讯了
    维持TCP长连接需要有心跳机制,请增加心跳机制。
    3、设备不一定什么时候就不能通讯了
    请在TCP通讯客户端(设备端)监听TCP通讯状态,一旦设备断开应发起重连,也可以使用双向心跳机制来进行设备是否在线的判断。
    双向心跳机制就是设备端发送心跳信息到服务器端,服务器端收到心跳信息后需要回复心跳信息,如果设备端超时未收到服务器端回复的心跳信息,则判断设备掉线,发起重连。