锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

WebSocket连接错误的解决方案

时间:2022-09-27 12:30:00 连接器702500v连接器j95连接器

一、前言

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

WebSocket connection to 'ws://localhost' failed:

或者

Whoops!Lost connection to http://localhost:

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

二、错误及其解决方案

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

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

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

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

                     org.springframework.boot             spring-boot-starter-web                                                                org.springframework.boot                     spring-boot-starter-tomcat                                                             org.springframework.boot             spring-boot-starter-tomcat                      

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(); //都需要身份认证

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

相关文章