参考:在 Spring Boot 中整合、使用 WebSocket - spring 中文网 (springdoc.cn)
===============================
原代码(此时前端访问后端,后端会出现:
No mapping for GET /wspath
)
前端相关代码:
let socket: WebSocket | null = null const socketURL = `ws://127.0.0.1:8084/wspath/${userId}` socket = new WebSocket(socketURL.toString()) // 建立ws连接
后端代码:
1.config配置
@Configuration @EnableWebSocket public class WebSocketConfig { @Bean public ServerEndpointExporter serverEndpointExporter() { return new ServerEndpointExporter(); } }
2.实现类(类中的方法我没粘贴进来)
@Component @Slf4j @ConditionalOnClass(value = WebSocketConfig.class) @CrossOrigin(origins = "*", maxAge = 3600) @ServerEndpoint(value = "/wspath/{userId}") public class MyWebSocketHandler {}
======================
看了一下是没有注册WebSocket,但是我已经使用了@Component进行注解,按理Spring会自动扫描注册,但是就是没有成功,搞不明白。
所以我们手动注册一下即可。
======================
前端代码不变,后端只修改config的配置文件:
@Configuration @EnableWebSocket public class WebSocketConfig { @Bean public ServerEndpointExporter serverEndpointExporter() { ServerEndpointExporter exporter = new ServerEndpointExporter(); exporter.setAnnotatedEndpointClasses(MyWebSocketHandler.class); return exporter; } }
如此,就可以接收到前端的建立请求了。
标签:exporter,WebSocket,ServerEndpointExporter,GET,public,No,class From: https://www.cnblogs.com/MorningMaple/p/17968546