Spring WebSocket 错误

💡 原文中文,约3800字,阅读约需9分钟。
📝

内容提要

JSR-356容器握手失败可能是由于Spring MVC默认使用不匹配的WebSocketContainer。解决方法包括显式注入JSR-356容器或切换到Reactor Netty客户端,并确保配置类添加@EnableWebSocket以避免循环依赖。Spring Boot 3.x使用jakarta.websocket,需统一依赖版本以防冲突。常见错误有循环依赖、无效JSON和空指针异常。

🎯

关键要点

  • JSR-356容器握手失败的现象包括控制台没有afterConnectionEstablished日志,客户端卡在握手阶段或报错超时。
  • 握手失败的原因是Spring MVC默认使用的StandardWebSocketClient未指定底层WebSocketContainer,导致与嵌入式Tomcat不匹配。
  • 解决方法包括显式注入JSR-356容器或切换到Reactor Netty客户端,并确保配置类添加@EnableWebSocket以避免循环依赖。
  • Spring Boot 3.x使用jakarta.websocket,需统一依赖版本以防冲突。
  • 常见错误包括循环依赖、无效JSON和空指针异常,需通过@Lazy或拆分配置来解决循环依赖。
  • 无效JSON错误通常是由于前端使用了错误的引号,需使用英文双引号。
  • 空指针异常需判空或使用安全调用操作符。

延伸问答

JSR-356容器握手失败的常见现象是什么?

常见现象包括控制台没有afterConnectionEstablished日志,客户端卡在握手阶段或报错超时。

如何解决Spring MVC中JSR-356容器握手失败的问题?

可以显式注入JSR-356容器或切换到Reactor Netty客户端,并确保配置类添加@EnableWebSocket以避免循环依赖。

Spring Boot 3.x与WebSocket的依赖版本有什么关系?

Spring Boot 3.x使用jakarta.websocket,需统一依赖版本以防冲突。

无效JSON错误通常是由什么引起的?

无效JSON错误通常是由于前端使用了错误的引号,需使用英文双引号。

如何处理Spring WebSocket中的循环依赖问题?

可以通过@Lazy注解或拆分配置来解决循环依赖问题。

Spring WebSocket中常见的空指针异常如何避免?

空指针异常需判空或使用安全调用操作符。

➡️

继续阅读