最近公司说要重做聊天模块,之前是用的http轮询。。。然后在讨论用什么框架的时候,老大说,咱自己写。。恩。。自己写。。。自己写。。。。自己写。。。。
先理了下思路,感觉重点有下面几个
- 长连接的维护
1.1 手机低电量进程被杀
1.2 手机深度休眠被杀
1.3 内存占用过大被杀 - 断网重连
- 账号重复登录
综上,
- 需要一个心跳检测,一段时间没反应(断开连接)就要重新连接,这时候要考虑socket对象复用、和重复的问题
- 手机网络中断的时候,心跳需要关闭,当网络重启时继续心跳
- 收到数据时做确认回馈,服务端没有收到回馈时重新发包(检测数据丢失问题)
但是,以第一点问题来说,socket本身的长连接可以通过心跳包检测重连,但是socket所在进程被杀却没有办法
网友评论