Android中开发IM即时通信功能的方案

这里有必要普及一下xmpp是个什么东西?android

引用某娘的定义:api

      XMPP是一种基于标准通用标记语言的子集XML的协议,它继承了在XML环境中灵活的发展性。所以,基于XMPP的应用具备超强的可扩展性。通过扩展之后的XMPP能够经过发送扩展的信息来处理用户的需求,以及在XMPP的顶端创建如内容发布系统和基于地址的服务等应用程序。并且,XMPP包含了针对服务器端的软件协议,使之能与另外一个进行通话,这使得开发者更容易创建客户应用程序或给一个配好系统添加功能。服务器

网络结构:网络

      XMPP中定义了三个角色,客户端,服务器,网关。通讯可以在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,链接管理和信息的路由功能。网关承担着与异构即时通讯系统的互联互通,异构系统能够包括SMS(短信),MSNICQ等。基本的网络形式是单客户端经过TCP/IP链接到单服务器,而后在之上传输XML。socket

功能:测试

      传输的是与即时通信相关的指令。在之前这些命令要么用2进制的形式发送(好比QQ),要么用纯文本指令加空格加参数加换行符的方式发送(好比MSN)。而XMPP传输的即时通信指令的逻辑与以往相仿,只是协议的形式变成了XML格式的纯文本。优化

 

一句话总结就是一个能够用于IM功能的协议,传输的是xml数据spa

 

移动端IM大概有如下这些方案,但不只于这些.net

1.第三方平台xml

好比环信,融云,leancloud,容联云等等。直接使用sdk就能够实现了,最简单最直接,并且稳定性已经不错了,连UI界面都带有了,能够自行修改,缺点是要收费,好比环信日活跃用户30万以上开始收费,融云基础功能不收费,VIP级别的功能要收费。若是让我选应该会在环信和融云之间选,环信的话一个是市场占有率比较大,二个是技术客服基本都能找到在线的,融云客服的话须要像写邮件同样找技术解决问题,不是在线的交流,我以为挺很差的,融云的demo却是作得比环信好看,环信的看上去很粗糙的感受。据使用过的朋友反馈融云sdk比较好接入,环信稍微麻烦点,使用的时候都会有一些坑的地方要处理。

 

2.Spark+smack+openfire套餐

安卓使用asmack,测试使用spark,服务器使用openfire。asmack能够说是smack的Android平台的支持版提供xmpp协议的实现,就是一些个api,spark就是一个能够用来在pc相互同信的客户端,openfire部署也比较简单,next,next就差很少了。这套方案还算比较成熟的了,固然没有第三方的方便,工做量也增多了,这套也是基于xmpp协议同时也就有xmpp协议的一些缺点。

 

3.使用第三方推送的sdk

利用推送的及时性来作im也是能够的,推送也不收费吧。

 

4.Socket长连接

socket你们都懂了的,感受作个小东西还能够,可是正真商用要作的处理仍是挺多的,网络优化,稳定性等等。

 

5.基于xmpp本身作

xmpp协议原本就是能够坐im功能的,据了解环信就是本身基于xmpp来作的,50人上下的团队14年开始作的,如今两年左右已经融了两三轮资了。不过xmpp基于xml,冗长直接致使费流量费电,特别是移动端,能够考虑在传输的时候本身加一层二进制协议,若是环信真是xmpp来作应该也会在这方面作优化的。还有mqtt,sip等协议也是能够本身作。若是im不是核心功能不推荐本身作,费时费力。

相关文章
相关标签/搜索