近期主要是在搞iOS的即时通信的开发,第一个及时聊天版本已经上线了。前期曾考虑过聊天类的SDK,由于考虑到深度的定制而且与业务的需求高度相关,但最后选择了本身实现整套聊天的过程。html
前端使用的是SocketRocket、如以前的文章有所叙述。文章连接。
后端使用的是WorkerMan。前端
前端iOS涉及到问题主要有:git
1.断网弱网网络切换等状况的断线重连处理。
2.消息与服务器的同步,不能出现消息遗漏、丢失的状况。
3.消息的接收,分发,通知。
4.消息多种样式Cell的展现。(UITableView的使用。)
5.内容输入变换。
6.多设备同时登陆的消息同步,(A设备发送消息,B设备也要同步显示这条发送的消息)。
7.已读未读的标识、消息发送失败的标识、消息发送失败的重发操做等。
8.如何确保消息发送到服务器的消息发送成功?(服务器收到消息的回执操做)。
9.消息如何保证惟一性,好比先后两条消息内容同样,如何区分?(消息增长惟一标识)
如此等等。。。github
后期主要是对聊天这一块的内存释放进行优化,确保聊天主界面的内存释放,避免内存的大量消耗。
这方面主要是借助苹果公司的Instruments工具和MLeaksFinder这个库。后端
避免耗时的操做,好比建立大量的对象。优化用户体验,对聊天界面的数据展现,大量计算的优化,包括文字高度的计算,图片的绘制,layer的处理等。
针对这方面的优化,经过主观常见的耗时操做,TIK、TOK代码的执行时间查看,以及App运行FPS的查看(YYFPSLabel),定位具体的耗时页面引发的界面卡顿。避免将耗时卡住主线程的操做放在主线程中。服务器