010-87748857
CASE
新闻
即时通讯(IM)功能是APP的重要功能之一,而开发好移动IM却绝非易事。通常来说,IM技术选型至少要解决以下问题:

以上4点搞定后基本就有了一个可用的IM平台上。想更上一层楼,可以对电量和流量等做进一步优化,或者研究怎样支持百万级以上的用户。

协议选型

常用做IM的协议:

IM服务器选型

常见的开源IM服务器

标准协议及IM服务器的改进

XMPP协议的问题及改进

Openfire源码级别改进

移动网络环境下的优化

流量电量优化

流量测量

uid = Process.myUid();

initRecvBytes = TrafficStats.getUidRxBytes(uid);

initSentBytes = TrafficStats.getUidTxBytes(uid);

 

流量优化

  • 心跳:减小心跳包尺寸,减小发送频率,智能心跳(频率不固定,空闲时才发)

  • 协议:roster versioning (增量),xmpp quickstart,推送更新

  • Transport,Compress 将xml压缩成binary,http压缩

耗电量测量

既要测量应用在前台的耗电,也要测量后台待机状态下的耗电量

耗电量优化

  • 不要影响手机休眠:通过alram manager 触发心跳包

  • 尽量减少网络请求:本地db,内存cache数据,只同步增量,最好一次发送多个请求

  • 少用GPS定位:发送位置时才定位,网络定位优先

  • 真对不同移动网络特性的优化:移动网络下下载速度大于上传速度:2G一次发送数据包不要太大,3G,4G一次发送多更省电

    • file upload buffer size:2G数据包 1024字节 3G,10k

    • file download buffer size:2G 2048 3G 30k

  • 其他常规移动app开发优化:对访问最多的数据,直接访问而不用get/set 能减少一次函数的调用开销,常用数据结构的重用,对象缓存等。

client端各种问题及解决

数据同步

好友申请,群组邀请等的请求,数据同步需要支持离线,和断网两种情况,切换用户登录,不同设备之间同步

UI例子:位图显示效率和加载太多位图导致OutOfMemory

解决:

  • Image cache (Android LruCache)

  • Build in ThumbnailUtil vs Decode image file to thumbnail image

  • Call Bitmap.recycle()

  • ImageView,scaleType -> 尽量避免显示刷新时的二次缩放,准备几个固定比例的ImageView

支持百万以上并发

  • Operation system

  • TCP/IP

  • Scale Out

  • Session Replication

  • Stateless Everything (or as much as possible)

  • Async Everything (or as much as possible)

  • Big Data

  • Multi Data Center

环信部署图

免费获取网站建设方案及报价

没有找到您想要的信息?可以直接拨打 7*12 小时一对一资深技术支持  热线电话:010-87748857

*请认真填写需求信息,我们会在5分钟内与您取得联系。

首页
电话
咨询
地图