原创

WebSocket与Tomcat兼容问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://localhost01.blog.csdn.net/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。


0 个人打赏
文章最后发布于: 2017-10-08 04:35:35
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客

打赏

冉椿林博客

“你的鼓励将是我创作的最大动力”

5C币 10C币 20C币 50C币 100C币 200C币

分享到微信朋友圈

×

扫一扫,手机浏览