基于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,有点麻烦.