WebSocket与Tomcat兼容问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/localhost01/article/details/78172832

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。


猜你喜欢

转载自blog.csdn.net/localhost01/article/details/78172832
今日推荐