当要实现IM即时通讯聊天、消息推送等高实时性需求时,我们一般会选择长连接的通信方式。
而真正当实现长连接方式时,会遇到很多技术问题,比如最常见的长连接保活问题。
长连接的主要作是通过长时间保持双方连接,从而:
- 1)提高通信速度;
- 2)确保实时性;
- 3)避免短时间内重复连接所造成的信道资源和网络资源的浪费。
PS:对于IM这类的开发者而言,通常大家都把HTTP协议称“短连接”、把直接基于TCP、UDP或WebSocket的socket称为“长连接”。
从上节可知,在使用长连接的情况下,双方的所有通信都建立在1条长连接上(比如1次TCP连接)。所以,长连接需要持续保持双方连接才可使得双方持续通信。
然而,实际情况是,长连接会存在断开的情况。
这些断开原因主要是:
- 1)长连接所在进程被杀死(这主要说的是移动端);
- 2)NAT超时;
- 3)网络状态发生变化;
- 4)其他不可抗因素(网络状态差、DHCP的租期等等 )。 </