android即时通讯开发经验谈

米聊,微信,微聊,QQ, 个信,口信,QQ通讯录,天天聊等等,移动时代的即时通讯如雨后春笋般涌现出来。 QQ在移动互联网时代不再是无法挑战的霸权地位。各个IT大佬都在觊觎即时通讯市场。因为这个是能够打造新帝国的产品。

由于工作原因,我有机会全面负责这类产品的开发。 

开始接收这类产品的时候,我们避开了QQ这样的利剑,选择了通讯增强类应用,如个信,口信,QQ通讯录,天天聊等和短信或电话模块增强的产品。

开始开发的时候,我参考了openfire 开源项目。openfire有一套完整的客户端和服务端解决方案。服务端采用java,基于效率的考虑,我们放弃了这套方案。 客户端smark采用java对我们有一定的参考意义。 经过一段时间的讨论,我们定下数据格式协议,采用googleprotocal buffer, TCP/IP进行通讯。 采用socket 通讯,应该是行业标准,google pb 相对xml 或是json,可以省不少流量,并且可以极大地提高开发效率。

先说下客户端开发客户端基本是将openfire smark通讯那套拿过来, 读数据一个线程,写数据一个线程, 心跳一个线程(用于保持长连接).  接下就是面向接口的程序设计, 抽象出两个接口: packet, filter. 所有的业务包都要继承packet, 通过filter 获取想要的响应包。 Android 开发的时候,需要在androidmanifest.xml 注册网络连接侦听器, 侦听网络连接(断开与启动), 网络连接对象采用单态的设计模式。

客户端另外一个难点是对短信模块的改造,大体就是将android的短信模块移植过来,然后在合适地方添加网络信息的代码。

服务端要关注信息转发处理。建议采用c/c++语言开发,效率要高些。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值