前文提到用socket基于自定义的协议和TCP协议实现长连接,今天我们一步步来推演一下长连接的框架结构。
记得小学的时候有篇文章,讲述的是手工课上,爱因斯坦做出了一个非常简单粗陋的小板凳,老师和同学们都嘲笑他:还有比这更难看的小板凳么,爱因斯坦默默拿出了之前的做的一个和第二个小板凳,说:有,这两个是我前两次做的,比这个更加的丑陋。依循大师足迹,我们也来做一做自己的小板凳。
第一个小板凳
Now,产品原型诞生了。基于最简单的想法,只要客户端主动发起请求,并且成功连接到服务端,那么客户端与服务端就可以通过建立的链接自有的交流了。在不需要长连接模块时,断开连接,完成了整个交互的流程。
但是这个模型是几乎完全不能正常工作的。这涉及到计算机网络的相关知识。
移动网络
当一台手机连接上移动互联网时,运营商从其空闲的IP地址池中取出一个给该手机使用,这个IP是运营商的内网IP,用户这时也并没有真正连接上Internet,手机最终要连上Internet需要运营商的网关进行IP地址的转换(NetWork Address Translation,简称NAT),就是将内网的IP、端口映射到外部IP地址上。运营商为了减轻网关压力,腾出更多的空间给需要的用户,在一个链路有一段时间没有通信时就会强制断开其连接,删除其NAT映射表,造成链路中断。
所以第一个小板凳的连接很快就会被网关kill掉,为了保证数据通道的畅通,长连接采用了定期向服务器发送空闲数据包
移动客户端中长连接技术(一)
最新推荐文章于 2024-09-02 15:03:17 发布
本文探讨了移动客户端实现长连接的技术挑战,包括移动网络的NAT和网关策略,以及如何通过心跳包维持连接。介绍了初步的长连接模型及其问题,并提出通过心跳机制和断网重连来维护稳定的长连接。同时,对比了Android和iOS系统的长连接实现方式,强调了系统级长连接的省电和安全性优势。
摘要由CSDN通过智能技术生成