WebSocket与Tomcat版本兼容问题

WebSocket与Tomcat8.0以下

使用

tomcat自带catalina.jar与tomcat-coyote.jar

方法

通过继承catalina.jar中的WebSocketServlet类作为serverlet拦截前台ws协议的请求,大致关键代码:

createWebSocketInbound(String arg0){
		return new myMessageInbound(users);
}
复制代码

myMessageInbound是继承MessageInbound的类,里面自带方法onTextMessage、onMessage、onOpen等,即与前台相应方法匹配。

WebSocket与8.0以上

使用

tomcat自带的websocket-api.jar

方法

通过@ServerEndpoint(value = "/xxx")注解,此时,前台ws协议访问只需是ip+port/xxx,而不需要项目名。该类中,使用websocket-api.jar中的onclose、onopen等方法与前台相应方法匹配。

注意:

  1. Tomcat7.0.38之前版本会出现长链接自动断开,之后的版本修复了这个问题。

  2. tomcat的lib中含有websocket-api.jar,如果你项目是引用的自己的websocket-api.jar,部署到tomcat上后,会导致两个jar冲突(前台一直显示websocket close)。有三种解决方案:

    • 修改tomcat的contxet.xml文件,添加。

    • 直接调用tomcat的lib中的websocket-api.jar。

    • 【推荐】引入Tomcat类库:Add Library->Server Runtime->Apache Tomcat

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值