资讯详情

WebSocket连接错误的解决方案

一、前言

使用websocket实时通信时,常见以下报错:

或者

许多在线方案例如重新导入fastjson依赖、缺乏证书等其他解决方案不能解决问题,以下是我的经验websocket多日折磨后总结出的错误原因及解决方案。

二、错误及其解决方案

1、使用ServerEndpointExporter但是外置没用tomcat容器

这个错误应该是最常见和最不容易发现的,因为它藏得太深了,博主被困了很多天才发现错误

ServerEndpointExporter需要外置tomcat我们通常使用容器运行环境SpringBoot内置tomcat,导致ServerEndpointExporter一直在运行中报错。

在pom.xml排除文件SpringBoot自带的嵌入tomcat,添加外置的tomcat依赖

        <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-web</artifactId>             <!-- 移除嵌入式tomcat插件 -->             <exclusions>                 <exclusion>                     <groupId>org.springframework.boot</groupId>                     <artifactId>spring-boot-starter-tomcat</artifactId>                 </exclusion>             </exclusions>         </dependency>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-tomcat</artifactId>             <!--<scope>provided</scope>-->         </dependency>

2、使用拦截器或过滤器但没有对请求放行

这个错误比上面更容易发现,但也很难定位这个错误

使用拦截器或过滤器,但没有放行请求,特别是使用Spring Security或Shiro,很容易忘记放行请求路径

请求路径在相应的配置文件中放行"/socket/**"为例

    // API_PATH白名单     private static final String[] SECURITY_IGNORE_API_PATH = {             "/admin/login", "/logout",             "/socket/**"    ///放行请求api     };
        /* 配置认证授权 */         http.authorizeRequests()                 .antMatchers(SECURITY_IGNORE_API_PATH).permitAll() // API白名单                 .anyRequest() //任何其他请求                 .authenticated(); //都需要身份认证

标签: 连接器702500v连接器j95连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台