那些年IM的一些总结
一些问题
1.TCP和UDP选择:
毫无疑问,初始版本选择即是TCP,无论是前台,还是后台,都对于UDP优化毫无经验,同时TCP稳定点,三次握手。
2.消息推送:
长连接,同时使用心跳包定时检测是否NAT已经过期,再具体点就是当前TCP长连接会话是否有效,定时器选择即时AlarmManager。他不会随着手机休眠而休眠。
细致问题:
一、心跳包的发送时间策略
二、心跳包重发条件补齐
三、保证服务的存活率
3.数据库的优化
IM,牵扯到了第二道难题就是数据库的表结构,及数据库的维护,一旦上线就很难再更改数据库表结构。同时前期在选择数据库框架的时候,需要对于curd都要测试一遍,其中都要涉及到一对一,一对多,多对多的关系,尤其是对于数据框使用要多一封装层,给自己留下一条后路,万一数据库框架出问题了呢,litepal就出问题了。