WebSocket与Tomcat兼容问题

WebSocket与Tomcat兼容问题

1.WebSocket与7.0.47以下
  • 使用tomcat自带catalina.jar与tomcat-coyote.jar
  • 通过继承catalina.jar中的WebSocketServlet类作为serverlet拦截前台ws协议的请求,在其createWebSocketInbound(String arg0)方法中只需return new myMessageInbound(users);
  • myMessageInbound是继承MessageInbound的类,里面自带方法onTextMessage、onMessage、onOpen等,即与前台相应方法匹配。
2.WebSocket与7.0.47以上8.0以下
  • 使用tomcat自带catalina.jar与tomcat-coyote.jar
  • 通过继承catalina.jar中的WebSocketServlet类作为serverlet拦截前台ws协议的请求,在其createWebSocketInbound(String arg0,HttpServletRequest arg1)方法中只需return new myMessageInbound(users);
  • myMessageInbound是继承MessageInbound的类,里面自带方法onTextMessage、onMessage、onOpen等,即与前台相应方法匹配
3.WebSocket与8.0以上
  • 使用tomcat自带的websocket-api.jar
  • 通过@ServerEndpoint(value = "/xxx")注解,此时,前台ws协议访问只需是ip+port/xxx,而不需要项目名,该类中,使用websocket-api.jar中的onclose、onopen等方法与前台相应方法匹配
注意:
1.Tomcat7.0.38之前版本会出现长链接自动断开,之后的版本修复了这个问题
2.websocket-api.jar包,tomcat的lib中含有,如果你项目是引用的自己的websocket-api.jar,会导致jar冲突,前台一直是websocket close。有两种解决方案,一是修改tomcat的contxet.xml文件,添加<Loader delegate="true"></Loader>。或者直接调用tomcat lib中的websocket-api.jar。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值