这个解决方法已经定制下来很久了,上一段时间比较忙,没有时间整这些东西。最近稍微好些,不怎么加班。所以抽空总结下,同时也分享给大家,也算是给大家一个借鉴吧!或许这并不是最好的解决方案,但只要能满足当前需求的最好方案也算是最好的解决方案,谁说不是呢!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长连接的方式,这个是不行的
其一、手机的移动网络不稳定,长连接会经常断掉,当然你可以自动进行重连
其二、长连接一直连接在服务器上,占用服务器资源。当然你可以使用心跳式长连接或是轮询方式
其三、手机端一直连接服务器会使用手机端用户的网络带宽流量(流量不是免费的,客户会怎么想)
其四、手机端一直连着服务器,对手机的电量也有消耗(现在智能机解决电量也是一个问题)
相关推荐
课题题目:Java IM网络聊天程序设计 1. 主要功能: (1)服务器首先启动,使用ServerSocket监听指定的端口,等待客户端连接,客户端使用Socket对网络上某一个指定IP的服务器上的端口发出连接请求; (2)登录信息...
同学那边弄到的,ajaxim聊天程序.zip,还不错,有些想法都不错
最近项目需求要在小程序中添加一个即时通信IM的功能,本来想自己开发一个....评估了一下团队实力后,并不允许,所以找了一个IM第三方框架,采用的是腾讯云的即时通信IM,但是目前腾讯云IM的小程序SDK并没有包含UI,...
网易IM聊天程序,包括客户端、服务端,功能有好友列表功能、群组列表功能、聊天会话功能。
即时通讯聊天程序源码IM聊天系统即时通讯系统源码VUE开发.txt
即时通讯聊天程序源码IM聊天系统源码即时通讯系统源码VUE开发.txt
ajax im是一个类QQ的网页版即时聊天程序,主要有以下功能: 1、可添加好友及分组 2、可留言给离线好友 3、可设置聊天室集体聊天 配置: PHP+MYSQL 原版地址:http://www.ajaxim.com/ 版本:ajax im 3.41 安装前,...
全开源 PHP在线客服系统IM 即时通讯聊天源码微信公众号小程序 H5APP 网页端在线客服 PHP 在线全网客服系统功能介绍: 1、全渠道支持,网站+小程序+公众号+h5+app 等,全部可以使用 2、客服应用数量不限,每个应用...
简单的IM聊天程序,客户端使用MFC写的,可以在上面增加其他功能,服务端采用控制台程序,对数据包进行转发或处理。有更好的写法,可以交流。
JAVA开发高性能IM即时通信系统源码,JAVA语言开发的轻量、高性能、单机支持几十万至百万在线用户IM,主要目标降低即时通讯门槛,快速打造低成本接入在线IM系统,通过极简洁的消息格式就可以实现多端不同协议间的消息...
C# 仿MSN界面聊天软件IM源程序,虽然是仿,但也算是一个不小的项目,使用了SQL数据库,界面做的也挺漂亮,编译时需要把子目录依次编译,有些类库需要拷贝到相应的BIN目录中,可以运行,但就是比较麻烦些。
初次接触集成的东西确实有点费劲,最终通过两天的摸爬滚打把腾讯云的IM集成到了我的微信小程序中了。 让大家看一下效果: 我的毕设项目中只是用了腾讯IM的单人一对一聊天,当然这个IM是支持群的,语音视频,几乎...
5.微信小程序聊天功能 WebSocket 实现发送文字,图片,语音以及WebSocket 常见问题解决方案 6.[微信小程序]聊天对话(文本,图片)的功能(完整代码附效果图) 如果有个性化的需要改造,修改样式就行,可以帮助修改。 ...
最近项目需求要在小程序中添加一个即时通信IM的功能,本来想自己开发一个....评估了一下团队实力后,并不允许,所以找了一个IM第三方框架,采用的是腾讯云的即时通信IM,但是目前腾讯云IM的小程序SDK并没有包含UI,...
已经做好的IM分享给大家,前端UI,模拟都做好了,下载开发后台,前端处理下基本就能用了,分享给大家,界面简洁大方,技术:Jquery+html5,包含的界面:登陆、注册、密码找回、聊天界面
基于java的聊天程序(IM)源代码(分两部分)
IM聊天界面
前端开发语言:Vue( 安卓,IOS,Web为一套前端代码),服务器端开发语言: PHP+WebSocket,数据库:MySql + Mongodb,前端打包工具:Hbuilder 服务器搭建工具:宝塔 + Xshell。 短信接口: 支持阿里云 支付接口:支持...
vue2腾讯云IM聊天系统
野火IM是一套跨平台,核心功能开源的即时通讯解决方案,主要包含以下内容。 仓库 说明 备注 野火IM Android SDK原始码和应用原始码 可以很方便地进行二次开发,或集成到现有应用当中 野火IM iOS SDK原始码和App原始...