spring 关闭在Postman中工作但不在网站上的WebSocket连接

niknxzdl  于 2024-01-05  发布在  Spring
关注(0)|答案(1)|浏览(275)

我有一个react前端(网站),它试图建立一个https WebSocket连接到我的java spring应用程序后端(运行在云虚拟机上)。我可以通过postman建立ws连接。但是当我使用相同的URL尝试从我的网站建立连接时,ws连接不起作用。x1c 0d1x这是我的后端配置:

  1. import ...
  2. @Configuration
  3. @EnableWebSocket
  4. public class WebSocketConfig implements WebSocketConfigurer, WebSocketMessageBrokerConfigurer {
  5. @Override
  6. public void registerStompEndpoints(StompEndpointRegistry registry) {
  7. registry.addEndpoint("/ticTacToe").setAllowedOrigins("*").withSockJS();
  8. }
  9. @Override
  10. public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
  11. registry.addHandler(ticTacToeHandler(), "/ticTacToe")
  12. .setAllowedOrigins("*");
  13. }
  14. @Override
  15. public void configureMessageBroker(MessageBrokerRegistry config) {
  16. config.enableSimpleBroker("/topic");
  17. config.setApplicationDestinationPrefixes( "/app");
  18. }
  19. @Bean
  20. public GameMessageHandler<TicTacToeGame> ticTacToeHandler() {
  21. return new GameMessageHandler();
  22. }
  23. @Bean
  24. public Class<TicTacToeGame> ticTacToeGameClass() {
  25. return TicTacToeGame.class;
  26. }
  27. }

字符串
这是我的前端代码,WS被初始化:

  1. export default function TicTacToeAPI({
  2. nickname,
  3. roomNumber,
  4. setMenuState,
  5. }: TicTacToeAPIProps) {
  6. //websocket
  7. const [websocket, setWebsocket] = useState(
  8. new WebSocket("wss://150.230.148.196:8080/ticTacToe")
  9. );
  10. (...)


这个网址是https://belaschinke.com/projects/ticTacToe,如果你想自己看的话。
我不确定如何进一步调试这个问题/如何缩小来源范围。是否有选项可以更详细地查看网络流量?
我检查了网站的TLS证书(仍然有效).也刷新了证书,仍然没有变化.我尝试从多个网络连接.我也看了后端日志,但虽然 Postman 连接导致一些信息记录,当尝试从网站WS连接时,没有记录.
所以我将spring app的Logging级别设置为debug(应该在一开始就这样做),我得到了负责的错误:
springboot-app_1| 2023-12- 11 T07:44:03.706Z调试1 - [nio-8080-exec-8] o.a.t.util.net.NioEndpoint.handshake:从IP地址[23.6.34.54]和端口[61692] springboot-app_1进行客户端连接时握手失败|springboot-app_1| javax.net.ssl.SSLHandshakeException:接收到致命警报:certificate_unknown springboot-app_1| at java.base/sun.security.ssl.Alert. sslException(Alert.java:131)~[na:na] springboot-app_1| at java.base/sun.security.ssl.Alert. sslException(Alert.java:117)~[na:na] springboot-app_1| at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:358)~[na:na] springboot-app_1| at java.base/sun.security.ssl.Alert$AlertConsumer.consume(Alert.java:293)~[na:na] springboot-app_1| at java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:204)~[na:na] springboot-app_1| at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:172)~[na:na] springboot-app_1| at java.base/sun.security.ssl.SSLEngineImpl.decode(SSLEngineImpl.java:736)~[na:na] springboot-app_1| at java.base/sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:691)~[na:na] springboot-app_1| at java.base/sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:506)~[na:na] springboot-app_1| at java.base/sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:482)~[na:na] springboot-app_1| at java.base/javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:679)~[na:na] springboot-app_1| at org.apache.tomcat.util.net.SecureNioChannel.handshakeUnwrap(SecureNioChannel. java:483)~[tomcat-embed-core-10.1.15.jar!/:na] springboot-app_1| at org.apache.tomcat.util.net.SecureNioChannel.handshake(SecureNioChannel el.java:213)~[tomcat-embed-core-10.1.15.jar!/:na] springboot-app_1| at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1719)~[tomcat-embed-core-10.1.15.jar!/:na] springboot-app_1|在org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)~[tomcat-embed-core-10.1.15.jar!/:na] springboot-app_1| at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)~[tomcat-embed-core-10.1.15.jar!/:na] springboot-app_1| at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)~[tomcat-embed-core-10.1.15.jar!/:na] springboot-app_1| at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)~[tomcat-embed-core-10.1.15.jar!/:na] springboot-app_1| at java.base/java.lang.Thread.run(Thread.java:833)~[na:na] springboot-app_1| springboot-app_1| 2023-12- 11 T07:44:03.709Z DEBUG 1 - [nio-8080-exec-8] o.apache.coyote.http11.Http11处理器:Socket:[org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@39a4e37d:org.apache.tomcat.util.net.SecureNioWebel@6809af8c:java.nio.channels.SocketChannel[connected local=/172.18.0.3:8080 remote=/23.6.34.54:61692]],输入状态:[CLOSED],输出状态:[CLOSED]
我仍然不知道为什么它会失败,因为我的网站说要有一个有效的tls证书:

ldxq2e6h

ldxq2e6h1#

原来我仍然在我的后端应用程序上使用自签名证书,Postman接受了该证书,但Chrome拒绝了该证书。

相关问题