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

简介:

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

 

我们采用的方案如下:

先看图

xmpp-server-client

上图的流程大致上是这样的:

手机端向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长连接的方式,这个是不行的

其一、手机的移动网络不稳定,长连接会经常断掉,当然你可以自动进行重连

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

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

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






本文转自hoojo博客园博客,原文链接:http://www.cnblogs.com/hoojo/archive/2012/07/31/2616896.html,如需转载请自行联系原作者
目录
相关文章
|
Java Android开发 数据安全/隐私保护
im即时通讯开发/聊天软件系统/社交APP源码搭建/私有化部署聊天原生开发源码快速搭建
由IM技术专家打造的基于 Java 实现的即时通讯(IM)项目 我们提供私有化即时通讯解决方案,独立部署在您自己的服务器上、代码可以开源、支持二次开发、苹果端上线指导,源码出售,提供远程技术指导,全程指导服务器部署打包. 特点:原生开发 超高并发 音视频通话
im即时通讯开发/聊天软件系统/社交APP源码搭建/私有化部署聊天原生开发源码快速搭建
|
7天前
|
物联网 5G Android开发
移动应用与系统:从开发到应用
本文探讨了移动应用与系统领域的相关话题,涵盖了移动应用开发、移动操作系统等方面。通过分析现有技术和趋势,展望了未来移动应用与系统的发展方向,旨在为读者提供对这一领域的深入了解和思考。
11 0
|
18天前
|
搜索推荐 UED 开发者
谈谈你对移动应用中的推送通知的理解。
【4月更文挑战第1天】推送通知是移动应用的关键功能,实现即时信息传递、个性化定制、互动操作及用户可配置的接收选项。通过分析用户响应优化推送策略,提升用户参与和应用活跃度,但也需谨慎使用,以免打扰用户体验。
|
21天前
|
移动开发 大数据 Android开发
移动应用与系统:探索移动开发的未来
随着科技的飞速发展,移动应用和操作系统已经成为我们日常生活的一部分。本文将深入探讨移动应用开发的最新趋势,以及移动操作系统的影响和挑战。我们将从移动应用开发的基础知识开始,然后深入研究移动操作系统的功能和特性,最后探讨移动应用和系统的未来发展趋势。
|
8月前
|
存储 运维 开发工具
社交软件源码的核心,IM即时通讯技术
即时通讯(Instant Messaging)在社交软件源码中有着实时沟通和传输信息技术等服务,比方说我们大家熟悉的微信,QQ等聊天软件,目前,IM技术不仅仅活跃在社交场景中,还在电商直播等各种场景有所表现,一个成熟的IM产品落地,大体上能够分成三个重要部分:客户端开发,服务端开发,服务运维。
社交软件源码的核心,IM即时通讯技术
HarmonyOS学习路之开发篇—多媒体开发(媒体会话管理开发)
AVSession是一套媒体播放控制框架,对媒体服务和界面进行解耦,并提供规范的通信接口,使应用可以自由、高效地在不同的媒体之间完成切换。
|
10月前
|
Java 区块链 PHP
即时通讯/即时聊天系统开发详细案例,即时通讯/即时聊天系统开发(JAVA及PHP开发)
  区块链的可追溯性来源于区块链数据结构的特殊性。在区块链系统中,它的链式结构是从创世区块开始的,其后系统产生的所有区块都通过父区块的哈希值前后相连,并最终能追溯到创世区块。
|
11月前
|
Rust JavaScript 前端开发
即时通讯(IM)开源项目OpenIM对WebAssembly支持,提升web端体验
即时通讯(IM)开源项目OpenIM对WebAssembly支持,提升web端体验
255 0
|
存储 缓存 JavaScript
IM跨平台技术学习(七):得物基于Electron开发客服IM桌面端的技术实践
本文要分享的是得物技术团队基于Electron开发客服IM桌面端的技术实践过程,内容包括桌面技术选型、Electron的基础概念、具体的实施技术方案、遇到的棘手问题等。 Electron社区虽然很活跃,但是不一样的场景遇到的技术问题,几乎找不到对应的解决方案,我们很多都是在探索过程中不断的去完善,希望本文能带给你一些启发。
540 0
IM跨平台技术学习(七):得物基于Electron开发客服IM桌面端的技术实践
|
移动开发 Dart 前端开发
这么多移动开发的方式,传统方式写安卓、IOS 还有出路吗?
我所说的传统的方式是指,用 Java 或者 Kotlin 写安卓,用 Object-C 或者 Swift 写 IOS。
252 0
这么多移动开发的方式,传统方式写安卓、IOS 还有出路吗?