移动应用(手机应用)开发IM聊天程序解决方案

这个解决方法已经定制下来好久了,上一段时间比较忙,没有时间整这些东西。最近稍微好 些,不怎么加班。因此抽空总结下,同时也分享给你们,也算是给你们一个借鉴吧!或许这并非最好的解决方案,但只要能知足当前需求的最好方案也算是最好的 解决方案,谁说不是呢!O(∩_∩)O~ 浏览器

 

咱们采用的方案以下: 服务器

先看图 网络

xmpp-server-client

上图的流程大体上是这样的: 框架

手机端向PC端发送聊天内容 socket

一、手机端程序经过Socket链接服务器端的ServerSocket tcp

二、而后服务器端根据手机Mobile客户端发送过来统一规范的报文或聊天内容,进行解析 spa

三、而后将解析的内容,再用smack框架转发到openfire服务器 server

四、最后由openfire服务器向客户端(BS、CS、PhoneClient)程序发送聊天信息。这里的客户端能够是pc上的浏览器,pc上的桌面应用,手机应用等 blog

五、PC客户端BS程序(用http bind方式监听)的长链接监听到openfire服务器发送过来的数据,直接在页面中显示 ip

 

一样,PC客户端向手机端发送聊天内容

一、PC客户端(BS)能够直接用http bind(xmpp 提供的http请求的长链接方式)直接向openfire服务器发送聊天数据;

二、而后openfire服务器接收到聊天内容的时候,这时候socket服务器中的smack框架中有一个聊天内容的监听器

三、监听到PC端向openfire发送的内容后,会用socket的流向手机端发送咱们定义好的报文或是聊天内容

四、手机端的socket会不停的轮询(能够模拟心跳式长链接的方式),判断是否有消息到达,若是有则显示

 

而普通的聊天程序的流程则是客户端发送信息到openfire服务器,openfire服务器再将消息转发给其余客户端。他们省去了socket服务器这部分,那咱们为何要加上socket服务器这部分呢?

咱们这样作也是有本身的道理的:

首先,若是让手机端本身实现向openfire服务器发送程序的代码,那工做量是至关大的。由于每一个手机平台使用的语言都不一样,每一个平台都须要实现 向openfire服务器发送聊天信息的报文。这其实就是在作重复的工做,并且每一个平台实现向手机端发送报文信息的技术会让每一个手机端的开发人员都要学会 一套和openfire交互的代码。这势必会重复工做、重复相同业务的代码。因此,把这些代码放在一个tcp/ip的socket中转服务器进行统一发 送,这也是有好处的。

其次,把因此发送消息在报文在socket服务器完成,能够对业务进行一个统一的处理、消息过滤。

 

手机端被否决的解决方案,供参考

手机端用http长链接的方式,这个是不行的

其1、手机的移动网络不稳定,长链接会常常断掉,固然你能够自动进行重连

其2、长链接一直链接在服务器上,占用服务器资源。固然你可使用心跳式长链接或是轮询方式

其3、手机端一直链接服务器会使用手机端用户的网络带宽流量(流量不是免费的,客户会怎么想)

其4、手机端一直连着服务器,对手机的电量也有消耗(如今智能机解决电量也是一个问题)

相关文章
相关标签/搜索