首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

基于Tomcat的WebSocket(五月8日更新)

2012-08-22 
基于Tomcat的WebSocket(5月8日更新)之前大概的看过WebSocket,当时Tomcat还不支持WebSocket,所以当时写了一

基于Tomcat的WebSocket(5月8日更新)

之前大概的看过WebSocket,当时Tomcat还不支持WebSocket,所以当时写了一篇基于Jetty的WebSocket实现,地址如下:

http://redstarofsleep.iteye.com/blog/1307608

?

现在Tomcat7.0.27发布了,从这个版本开始Tomcat就支持WebSocket了。

Tomcat的WebSocket和Jetty的大致上差不多,大同小异,这里就简单的贴两个类吧:

?

第一个类,这个和Jetty一样,需要一个Servlet来处理WebSocket请求:

?

?

页面的话,就是标准的HTML5的websocket,这个和服务器是否是Tomcat或者Jetty是无关的:

?

?



但我在编写MyMessageInbound类的时候报如下错误,请问如何解决呢?
 

但我在编写MyMessageInbound类的时候报如下错误,请问如何解决呢?



而且我把catalina.jar包放在WEB-INF的lib目录下了.请问还需要配置些什么吗?

但我在编写MyMessageInbound类的时候报如下错误,请问如何解决呢?



而且我把catalina.jar包放在WEB-INF的lib目录下了.请问还需要配置些什么吗?

首先确认你的Tomcat是7.0.27,并且在Eclipse的Server中已经导入了,然后在工程上又击,选择Build Path--Config Build Path--Libraries选项卡下--Add Library--Server Runtime--选择Tomcat7即可.不需要把包考到lib下





你的Tomcat导入的好像不太对。我的可以看到很多Jar包的。你去相册里看下我的那个截图。
怎么在回复里插入图片啊。。。
果然需要技巧...
对了,请问怎么样实现把消息发给多个用户?我在onTextMessage方法里调用MessageInbound集合里子对象的getWsOutbound().writeTextMessage(msg)方法,但那个msg对象是Charbuffer类型,好像不能通过循环来发送给每个客户端(只能发给第一个客户端),然后msg就什么也没有了..

对了,请问怎么样实现把消息发给多个用户?我在onTextMessage方法里调用MessageInbound集合里子对象的getWsOutbound().writeTextMessage(msg)方法,但那个msg对象是Charbuffer类型,好像不能通过循环来发送给每个客户端(只能发给第一个客户端),然后msg就什么也没有了..

这个你看上一篇基于Jetty的.那个时候写的是多客户端的.只要定义一个全局的List就可以了:
private static List<MyWebSocket> socketList;换成Tomcat应该是一样的.

http://redstarofsleep.iteye.com/blog/1307608

我已经更新过了,你在看看! 14 楼 wlyfls 2012-05-10   请问lz,连接在空闲一断时间后自动终止怎么办?
15 楼 pch272215690 2012-05-17   wlyfls 写道请问lz,连接在空闲一断时间后自动终止怎么办?

我也遇到这种问题,不知何解。。。。 16 楼 ffyy_0106 2012-06-10   pch272215690 写道wlyfls 写道请问lz,连接在空闲一断时间后自动终止怎么办?

我也遇到这种问题,不知何解。。。。

heartbeat 17 楼 pch272215690 2012-06-13   ffyy_0106 写道pch272215690 写道wlyfls 写道请问lz,连接在空闲一断时间后自动终止怎么办?

我也遇到这种问题,不知何解。。。。

heartbeat
请问你验证过吗,在js处发心跳? 18 楼 jxfsuda 2012-06-14   pch272215690 写道ffyy_0106 写道pch272215690 写道wlyfls 写道请问lz,连接在空闲一断时间后自动终止怎么办?

我也遇到这种问题,不知何解。。。。

heartbeat
请问你验证过吗,在js处发心跳?
我也是在js处发心跳包了,大概20秒左右,不发送的话,就会断开.
而且发现个问题:
我的站点的session,如果在websocket这个servlet中也去getSession的话,会把整站的session重新重置. 也就是说,websocket中获取到不到站点中的session,cookie? 19 楼 yaolifei 2012-06-14   jxfsuda 写道pch272215690 写道ffyy_0106 写道pch272215690 写道wlyfls 写道请问lz,连接在空闲一断时间后自动终止怎么办?

我也遇到这种问题,不知何解。。。。

heartbeat
请问你验证过吗,在js处发心跳?
我也是在js处发心跳包了,大概20秒左右,不发送的话,就会断开.
而且发现个问题:
我的站点的session,如果在websocket这个servlet中也去getSession的话,会把整站的session重新重置. 也就是说,websocket中获取到不到站点中的session,cookie?

看了tomcat的bug list,
https://issues.apache.org/bugzilla/show_bug.cgi?id=53074
上面说trunk版本中已经解决了,所以就下了源代码进行编译,经测试已解决。不知道怎么贴附件,贴上网盘地址,我编译出的版本,暂且为7.0.28版本吧:http://115.com/file/an34jocc#apache-tomcat-7.0.28.rar 20 楼 jxfsuda 2012-06-15   yaolifei 写道jxfsuda 写道pch272215690 写道ffyy_0106 写道pch272215690 写道wlyfls 写道请问lz,连接在空闲一断时间后自动终止怎么办?

我也遇到这种问题,不知何解。。。。

heartbeat
请问你验证过吗,在js处发心跳?
我也是在js处发心跳包了,大概20秒左右,不发送的话,就会断开.
而且发现个问题:
我的站点的session,如果在websocket这个servlet中也去getSession的话,会把整站的session重新重置. 也就是说,websocket中获取到不到站点中的session,cookie?

看了tomcat的bug list,
https://issues.apache.org/bugzilla/show_bug.cgi?id=53074
上面说trunk版本中已经解决了,所以就下了源代码进行编译,经测试已解决。不知道怎么贴附件,贴上网盘地址,我编译出的版本,暂且为7.0.28版本吧:http://115.com/file/an34jocc#apache-tomcat-7.0.28.rar
谢过兄台!~~ 21 楼 jxfsuda 2012-06-15   做了浏览器兼容性的示例代码发在这里了

http://www.cnblogs.com/jifsu/archive/2012/06/15/2550603.html

用到的是flash.还需要另外开socket,有点麻烦.

热点排行