怎样用java web和java websocket实例现网页即时通讯

两天热门文章
最新推荐文章基于Tomcat7、Java、WebSocket的服务器推送聊天室项目
& & & & HTML5 WebSocket实现了服务器与浏览器的双向通讯,双向通讯使服务器消息推送开发更加简单,最常见的就是即时通讯和对信息实时性要求比较高的应用。以前的服务器消息推送大部分采用的都是“轮询”和“长连接”技术,这两中技术都会对服务器产生相当大的开销,而且实时性不是特别高。WebSocket技术对只会产生很小的开销,并且实时性特别高。下面就开始讲解如何利用WebSocket技术开发聊天室。在这个实例中,采用的是Tomcat7服务器,每个服务器对于WebSocket的实现都是不一样的,所以这个实例只能在Tomcat服务器中运行,不过目前Spring已经推出了WebSocket的API,能够兼容各个服务器的实现,大家可以查阅相关的资料进行了解,在这里就不介绍了,下图是聊天室的效果图:
& & & & 在这里实例中,实现了消息的实时推送,还实现了聊天用户的上下线通知。下面就开始具体讲解如何实现。
& & & & Tomcat实现WebSocket的主要是依靠org.apache.catalina.websocket.MessageInbound这个类,这个类的在{TOMCAT_HOME}/lib/catalina.jar中,所以你开发的时候需要将catalina.jar和tomcat-coyote.jar引入进来,下面这段代码就是暴露给客户端连接地址的Servlet:
& & & & 这个Servlet跟普通的Servlet有些不同,继承的WebSocketServlet类,并且要重写createWebSocketInbound方法。这个类中Session中的user属性是用户进入index.jsp的时候设置的,记录当前用户的昵称。下面就是自己实现的WebSocket连接对象类WebSocketMessageInbound类的代码:
& & &代码中的主要实现了onOpen、onClose、onTextMessage方法,分别处理用户上线、下线、发送消息。在这个类中有个WebSocketMessageInboundPool连接池类,这个类是用来管理目前在线的用户的连接,下面是这个类的代码:
& & 上面的代码就是聊天室后台的代码,主要是由3个对象组成,Servlet、连接对象、连接池,下面就是前台的代码,前台的代码主要是实现与服务器进行连接,展示用户列表及信息列表,前台的展示使用了Ext框架,不熟悉Ext的同学可以初步的了解下Ext,下面的是index.jsp的代码:
& & & &页面的展示主要是在websocket.js中进行控制,下面是websocket.jsd的代码:
[javascript]&
& & & 这段代码主要是实现了展示消息的容器,下面就是页面加载完成后开始执行的代码:
[javascript]&
& & & 上面的代码就是页面完成加载后自动连接服务器,并创建展示界面的代码。
需要注意的两点,在部署完成之后需要将在tomcat应用目录中的lib目录下的catalina.jar和tomcat-coyote.jar删掉,比如项目的lib目录在D:\workspace\WebSocket\WebRoot\WEB-INF\lib,而部署的应用lib目录是在D:\tools\apache-tomcat-7.0.32\webapps\WebSocket\WEB-INF\lib,删掉部署目录的lib目录中连两个jar就可以了,否则会包Could not initialize class com.ibcio.WebSocketMessageServlet错误,切记。
& & 如果还是无法建立连接,请下载最新的tomcat,忘了是那个版本的tomcatcreateWebSocketInbound是没有request参数的,现在的这个代码是有这个参数了,7.0.3XX版本都是带这个参数的,切记。
& & & &使用WebSocket开发服务器推送非常方便,这个是个简单的应用,其实还可以结合WebRTC实现视频聊天和语音聊天。在我的Leetop项目中已经实现了浏览器端视频聊天的功能,大家可以去看看&
,在我的另外一篇文章中有详细的介绍:
,下图就是Leetop项目的效果图:
下载地址:
本分类共有文章26篇,更多信息详见
& 2012 - 2014 &
&All Rights Reserved. &使用 HTML5 webSocket API实现即时通讯的功能 - 下载频道
- CSDN.NET
&&&&使用 HTML5 webSocket API实现即时通讯的功能
使用 HTML5 webSocket API实现即时通讯的功能
本工程为MyEclipse javaWeb工程,用于展示如何使用 HTML5 webSocket API实现即时通讯的功能。
本工程编码方式:UTF-8
功能说明:
1、本功能支持多人聊天,类似于/网站中的在线自询;
2、有人上线或下线时,会话窗口会自动显示;
3、支持快捷键关闭会话窗口或发送会话信息。
环境要求:
1、Tomcat 要求为7.0以上的版本
如果要在多台计算机上进行测试,需要将websocket.js文件中&ws://localhost:8080/WebSocket/sendMessage&改为&ws://服务器计算机IP:端口/WebSocket/sendMessage& 访问时http为“http://服务器计算机IP:端口/WebSocket/”。
出现问题及解决方法:
java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServlet
解决方法:Tomcat安装文件context.xml里的Context标签中添加&Loader delegate=&true& /&即可解决该问题。
java.lang.NoSuchMethodError: org.apache.catalina.connector.RequestFacade.doUpgrade(Lorg/apache/coyote/http11/upgrade/UpgradeI)V
解决方法:找到Tomcat安装文件夹中的lib文件夹,删除其中名为“catalina.jar”和“tomcat-coyote.jar”两个jar文件,将本工程中WebRoot——&WEB-INF——&lib文件夹中名为“catalina.jar”和“tomcat-coyote.jar”两个jar文件拷贝到Tomcat安装文件夹内的lib文件夹里。
若举报审核通过,可奖励20下载分
被举报人:
wangshuxuncom
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
开发技术下载排行java基于WebSocket通信,并通过webRTC调用本地摄像头实现聊天室源代码-分享-最代码
精java基于WebSocket通信,并通过webRTC调用本地摄像头实现聊天室源代码
比较简单的一个Demo,共大家研究深入下.tomcat7.027开始支持webSocket.部署后将项目中的&catalina.jar,tomcat-coyote.jar手动删除掉就OK,然后自己改下index.html的IP和端口就OK了
//webChat/webChat/.classpath/webChat/.mymetadata/webChat/.project/webChat/.settings/webChat/.settings/org.eclipse.core.resources.prefs/webChat/.settings/org.eclipse.jdt.core.prefs/webChat/1.jpg/webChat/2.jpg/webChat/WebRoot/webChat/WebRoot/css/webChat/WebRoot/css/2014.jpg/webChat/src/webChat/src/com/webChat/src/com/web
编程语言基础
数据库开发
客户端开发
服务器软硬件
开源组件类库
暂无贡献等级
暂无贡献等级
暂无贡献等级
暂无贡献等级
暂无贡献等级
暂无贡献等级
暂无贡献等级
暂无贡献等级
暂无贡献等级
暂无贡献等级
暂无贡献等级
暂无贡献等级
暂无贡献等级
扫描二维码关注最代码为好友"/>扫描二维码关注最代码为好友求JAVA WEB后台、IOS、Android之间的通讯解决方案
主要是想做像QQ那种即时通讯的,有IOS与IOS之间的,ANDROID与ANDROID之间的,IOS与ANDROID之间的这几种,还要有IOS、ANDROID与WEB之间的通讯的(WEB是以网页形式展现,就WEB网页上面写IOS,ANDROID端发消息,然后也能回复,就是能互发)
谁好的解决方案啊?
谢谢大家了
本质上是realtime方案.
iOS, Android, Web (javascript)客户端。 都是后台realtime服务连接。 realtime服务负责消息转发。
一般聊天应用消息通讯协议采用: XMPP, 后台服务器选择openfire.
如果不愿意用openfire这种重量级的方案,可以试试我的方案:
Node.js + Socket.IO 做实时消息推送
基于socket.io封装的websocket服务器:
/lvjian700/node-pusher
服务器内嵌js客户端
Java客户端
/lvjian700/pusher4j
今天刚解决的iOS客户端的交互。代码还没整理
Rest-ful 接口:
后台: JBoss RestEasy
iOS: RestKit
openfire可以实现的
见过比较多的,就是楼上 说的2,3,4类形
目前的web应用,不论是网页版还是移动app都是基于http协议的。
有这样几个方案:
1. soap协议
2. 纯http协议,以请求参数的键值形式发送请求参数,以json响应
3. 纯http协议,请求响应参数都是json
4. RESTful,请求响应参数可以参考2、3
5. 还有一种方式自己基于http协议定义传输方案,用的应该不多。如果你要用可以考虑使用MessagePack作为数据序列化/反序列化方案
7. 连http也不用了,基于socket实现传输方案,估计除了公司内部通讯应该不会有人采用
个人认为第一种过于沉重,随着功能越来越复杂,传输的报文会越来越大。xml本身就是一个沉重的东西。
第二种比较容易,对于服务器来说最简单,不过客户端要自己拼请求参数,不是很方便
第三种比第二种稍微复杂的在于,每次请求都要指定Content-Type:text/json。否则服务器会收不到请求参数或出错。
第四种,网上有很多文章也很推崇。但是由于跟传统的mvc方式差异巨大,没有了解过的人理解比较困难。曾经跟同事讲过这种模式,所有人都一脸茫然。
第五种,可以基于http协议+MessagePack传输二进制数据,这是前面五种方式效率最高,传输字节数最少的方式。不过由于MessagePack本身的限制,传输对象时可能不够灵活,一个对象的全部属性都要被序列化,而不能选择序列化。如果要定制传输的数据,就要调用它的底层api,比较麻烦。
使用第二、第五种方式,还可以实现只需要开放一个uri,就能实现全部客户端与服务器的交互。只需要根据参数值决定具体要访问哪个模块和模块里的哪个操作。如果设计的好,可以做到很灵活,而且也能达到理想的低耦合高内聚。
每种方式都各有优缺,关键就看团队的技术倾向。
你最好先看下QQ到底是什么实现的,
JAVA WEB后台、IOS、Android,这些只是通讯方式或者说是协议的问题。
IOS、Android ,windows,linux无关紧要。
只要知道QQ是怎么来实现那些对话窗口的就行。
我比较好奇的是现在QQ的聊天记录,在电脑,或移动终端上都可以得到~~
已解决问题
未解决问题}

我要回帖

更多关于 java websocket客户端 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信