移动IM的开发学习

[版权声明] 本站内容采用 知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆 (CC BY-NC-SA 3.0 CN) 进行许可。
部分内容和资源来自网络,纯学习研究使用。如有侵犯您的权益,请及时联系我,我将尽快处理。
如转载请注明来自: Dreamlike博客,本文链接: 移动IM的开发学习

移动IM这块没有做过,但是挺感兴趣的,花了些时间研究。

如果要做移动IM,考虑的问题很多,主要的还是服务器如何进行构架。比如这篇文章《细数移动IM开发中的那些坑》所提到的几个问题,集群设计、数据库设计等等,本人也没多大经验,也是抱着学习的态度看文,这里就不展开了。

我们主要来看看服务器与客户端交互的问题,即传输协议的选择。

再来看一篇文章先《移动IM开发那些事:技术选型和常见问题

这两篇文章都讲了几个比较常用的通讯协议:XMPP,MQTT,Protobuf,私有协议等。文中是这样介绍的:

我们再看一下IM 协议如何选型。通常IM采取的协议有xmpp、mqtt和私有协议,我们来逐一分析他们的优缺点。
1、xmpp协议:
1.1、优点:基于xml协议,容易理解,使用广泛,易于扩展。
1.2、缺点:流量大,在移动终端也耗电。交互过程复杂。多被pc时代的产品使用,不适合移动时代的IM产品,即使我们基于xmpp进行改进,简化握手过程,改进文件传输机制,但是它的基因决定了如何改进,他都不适合移动互联网时代的IM产品。就像凤姐无论怎么整容,也变成不了高圆圆一样。
2、mqtt协议:
2.1、优点:适配多平台。
2.2、缺点:协议简单,但是需要自己扩展好友,群组等功能。
3、私有协议:
3.1、优点:随心所欲,自己定义,流量小。
3.2、缺点:工作量巨大,扩展性差,需要考虑全面。
4、protbuf协议:
4.1、优点:非常小,非常快,非常简单。
4.2、缺点:不能表示复杂的数据结构,但是对于IM来讲,已经足够。强烈推荐此协议。

最出名的XMPP我曾经搭建过环境(openfire+spark+smack)测试过,当然这只是PC端的,功能做的已经很完善了。但我也找过不少资料,很多人都说XMPP协议太过冗余,经过不少坑之后总结出XMPP不适合作为移动端的IM协议,腾讯曾经就用过XMPP后来换成自家的私有协议。

MQTT的优点是协议简单,流量少,但是它并不是一个专门为IM设计的协议,多使用于推送。

Protobuf(https://github.com/google/protobuf)最近有学习,Google的产品,目前为止支持的语言有C++、Java、Python、Javascript等等,事实上很多人都编译出适合其他语言的库,应用还是比较广泛的。感觉它的优点非常的明显:

非常小,非常快,非常简单。

确实从我看的不少资料来看,protobuf口碑不错,轻量适合做为移动IM的通讯协议。

关于移动IM的架构和其他考虑的问题,除了上面两篇文章,还可以看看这篇《微信IM软件设计架构》,受益匪浅。

先把基础的知识都了解了,有空想自己实现移动IM。

如果本文对您有所帮助,可以请作者喝杯咖啡,感谢支持^_^

支付宝支付
微信支付

发表评论

电子邮件地址不会被公开。 必填项已用*标注