这个解决方法已经定制下来很久了,上一段时间比较忙,没有时间整这些东西。最近稍微好些,不怎么加班。所以抽空总结下,同时也分享给大家,也算是给大家一个借鉴吧!或许这并不是最好的解决方案,但只要能满足当前需求的最好方案也算是最好的解决方案,谁说不是呢!O(∩_∩)O~
我们采用的方案如下:
先看图
上图的流程大致上是这样的:
手机端向PC端发送聊天内容
1、手机端程序通过Socket连接服务器端的ServerSocket
2、然后服务器端根据手机Mobile客户端发送过来统一规范的报文或聊天内容,进行解析
3、然后将解析的内容,再用smack框架转发到openfire服务器
4、最后由openfire服务器向客户端(BS、CS、PhoneClient)程序发送聊天信息。这里的客户端可以是pc上的浏览器,pc上的桌面应用,手机应用等
5、PC客户端BS程序(用http bind方式监听)的长连接监听到openfire服务器发送过来的数据,直接在页面中显示
同样,PC客户端向手机端发送聊天内容
1、PC客户端(BS)可以直接用http bind(xmpp 提供的http请求的长连接方式)直接向openfire服务器发送聊天数据;
2、然后openfire服务器接收到聊天内容的时候,这时候socket服务器中的smack框架中有一个聊天内容的监听器
3、监听到PC端向openfire发送的内容后,会用socket的流向手机端发送我们定义好的报文或是聊天内容
4、手机端的socket会不停的轮询(可以模拟心跳式长连接的方式),判断是否有消息到达,如果有则显示
而普通的聊天程序的流程则是客户端发送信息到openfire服务器,openfire服务器再将消息转发给其他客户端。他们省去了socket服务器这部分,那我们为什么要加上socket服务器这部分呢?
我们这样做也是有自己的道理的:
首先,如果让手机端自己实现向openfire服务器发送程序的代码,那工作量是相当大的。因为每个手机平台使用的语言都不同,每个平台都需要实现向openfire服务器发送聊天信息的报文。这其实就是在做重复的工作,而且每个平台实现向手机端发送报文信息的技术会让每个手机端的开发人员都要学会一套和openfire交互的代码。这势必会重复工作、重复相同业务的代码。所以,把这些代码放在一个tcp/ip的socket中转服务器进行统一发送,这也是有好处的。
其次,把所以发送消息在报文在socket服务器完成,可以对业务进行一个统一的处理、消息过滤。
手机端被否决的解决方案,供参考
手机端用http长连接的方式,这个是不行的
其一、手机的移动网络不稳定,长连接会经常断掉,当然你可以自动进行重连
其二、长连接一直连接在服务器上,占用服务器资源。当然你可以使用心跳式长连接或是轮询方式
其三、手机端一直连接服务器会使用手机端用户的网络带宽流量(流量不是免费的,客户会怎么想)
其四、手机端一直连着服务器,对手机的电量也有消耗(现在智能机解决电量也是一个问题)
相关推荐
这款应用程序设计为代理式IM风格,旨在提供一种高效、便捷的移动通信解决方案。在深入探讨jchat4android的知识点之前,我们先来了解一下JADE框架。 JADE(Java Agent Development Framework)是一个开源的、基于...
风车IM即时通讯聊天系统是一款专为移动社交和企业办公设计的即时通讯解决方案,它提供了完整的源码,允许用户在自己的服务器上进行独立部署。这一特性确保了数据的安全性,因为所有的通讯信息都将通过加密通道传输,...
风车IM即时通讯聊天系统源码是一款用于构建聊天应用程序的完整解决方案,包含了客户端应用和服务器端的源代码,以及相关的安装和配置指南。这个系统旨在提供高效、稳定且安全的实时通信功能,使得用户能够在不同设备...
### IM即时通解决方案(IM消息平台)的知识点详解 #### 一、IM消息平台的意义与作用 **IM消息平台**的构建旨在为企业及其员工提供一个高效便捷的内部沟通渠道,以此提升企业的管理水平和工作效率,加速企业发展...
总结来说,Aurora IMUI项目是一个集成了MUI框架的跨平台聊天应用解决方案,它为开发者提供了一整套完善的聊天界面组件,简化了开发流程,提升了应用的质量。通过深入学习和研究,开发者不仅可以掌握Android应用开发...
标题"im_im_phpim插件PHP编写的在线IM聊天插件,可以配合PHP程序进行配置_源码.zip"指出,这是一个基于PHP编程语言开发的即时通讯(IM)聊天插件,名为"im_im_phpim"。这个插件设计用于集成到PHP应用程序中,提供...
"可封装APP"意味着源码支持将聊天系统打包成移动应用程序,用户可以在手机上方便地使用。这通常涉及到前端技术如HTML5、JavaScript以及与后端API的交互。 描述中提到的“视频教程”为开发者提供了解和学习源码的...
极光IM(Aurora IM)是一款广泛应用在移动应用中的即时通讯(Instant Messaging,简称IM)解决方案,尤其受到开发者们的青睐。它提供了丰富的API和SDK,使得开发者能够快速集成聊天功能到自己的应用程序中,无论是...
综上所述,“即时通讯源码青柚H5聊天系统”是一个集成了原生移动应用和HTML5技术的即时通讯解决方案。它采用MongoDB数据库,使用uni-app进行跨平台开发,且具有独立的代码结构和丰富的开发资源,是开发者构建即时...
这个项目为其他学习者提供了一个参考,他们可以从代码中学习到实际开发中的问题和解决方案,从而提升自己的编程技能。 总之,“校园通”是一个集即时通讯、课表管理、成绩查询和个性化设置于一体的安卓应用,展示了...
风车IM即时通讯聊天系统源码是一款专为开发者设计的独立服务器部署解决方案,旨在帮助用户快速构建属于自己的移动社交即时通讯应用。这个系统的核心特点在于它的高效性和灵活性,允许开发者根据需求进行定制化开发,...
总的来说,FunnyChat-IM项目是学习Android即时通讯应用开发的宝贵资源,通过深入研究其源代码,开发者可以掌握融云SDK的使用技巧,理解即时通讯应用的核心架构,并在此基础上实现自己的定制化需求。无论是对于初学者...
标题 "android聊天程序 XMPP-asmack" 描述...总的来说,"android聊天程序 XMPP-asmack"项目涵盖了Android应用开发、XMPP协议实现、实时通信、用户界面设计等多个技术领域,为开发者提供了学习和实践IM应用开发的实例。
同时,对于希望从事社交软件或移动应用开发的程序员来说,这是一次难得的实践经历,能够帮助他们更好地理解和应对实际工作中的问题。 总结来说,“仿QQ2008聊天程序”是一个全面展示C#语言在网络编程、图形用户界面...
在Android平台上,开发一款聊天应用是一项常见的任务,而"android手机聊天源代码"提供了一个开源的解决方案,使得开发者能够深入理解聊天应用的工作原理,并从中学习到实用的技术和最佳实践。这款开源项目,JChat4...
本套PHP开发的H5即时通讯聊天系统源码是一套完整的后端解决方案,适用于构建具有实时通信功能的H5聊天应用,并且支持群聊功能,能够方便地被封装成独立的移动应用程序。以下是对这套源码的核心知识点进行的详细解析...
8. **集成开发**:"联合即时"可能意味着项目旨在提供一个全方位的通讯解决方案,将多种通讯方式整合到一个单一的应用中,提升用户体验。 以上就是关于这个Qt局域网即时通讯项目的相关知识点,涵盖了从技术选型到...
该资源包是一个全面的即时通讯解决方案,主要用于构建类似微信的H5聊天系统,适用于社交应用的开发。这个项目包括了Android和iOS两端的APP源码,以及配套的视频教程,帮助开发者快速理解和实现一个功能完备的聊天...
IM+是一款由SHAPE Services公司开发的全能即时通讯工具,其独特之处在于它支持全平台,覆盖了...无论是个人还是企业,IM+都提供了一个高效、统一的通信解决方案,满足了现代用户在不同设备间无缝切换、实时沟通的需求。