给服务器响应200,java - 来自服务器 [200] 的 HTTP 响应不允许 HTTP 升级到 WebSocket - 堆栈内存溢出...

我在 STOMP Java 客户端(Spring 项目)中开发了我的 websocket 客户端,并在 Spring 启动中实现了服务器。

当客户端/服务器握手发生时,我遇到了连接升级问题。

Java客户端代码

List transports = new ArrayList<>(1);

transports.add(new WebSocketTransport(new StandardWebSocketClient()));

SockJsClient sockjsClient = new SockJsClient(transports);

WebSocketStompClient stompClient = new WebSocketStompClient(sockjsClient);

stompClient.setMessageConverter(new MappingJackson2MessageConverter());

stompClient.setTaskScheduler(new ConcurrentTaskScheduler());

StompSessionHandler sessionHandler = new SessionHandler();

stompClient.connect("ws://localhost:9090/health", sessionHandler);

服务器端

@Override

public void registerStompEndpoints(StompEndpointRegistry stompEndpointRegistry) {

stompEndpointRegistry.addEndpoint("/health")

.setAllowedOrigins("*")

.withSockJS();

}

@Override

public void configureMessageBroker(MessageBrokerRegistry registry) {

registry.enableSimpleBroker("/topic");

registry.setApplicationDestinationPrefixes("/app");

}

连接到服务器时在客户端生成的异常

16:18:50.955/3771 [SimpleAsyncTaskExecutor-1] ERROR o.s.w.s.s.c.DefaultTransportRequest - No more fallback transports after TransportRequest[url=ws://localhost:9090/health/29/344d627baac949f5bab5506f05f1a7eb/websocket]

javax.websocket.DeploymentException: The HTTP response from the server [200] did not permit the HTTP upgrade to WebSocket

at org.apache.tomcat.websocket.WsWebSocketContainer.connectToServerRecursive(WsWebSocketContainer.java:434)

at org.apache.tomcat.websocket.WsWebSocketContainer.connectToServerRecursive(WsWebSocketContainer.java:392)

at org.apache.tomcat.websocket.WsWebSocketContainer.connectToServer(WsWebSocketContainer.java:194)

at org.springframework.web.socket.client.standard.StandardWebSocketClient.lambda$doHandshakeInternal$0(StandardWebSocketClient.java:150)

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

at java.lang.Thread.run(Thread.java:745)

在 tomcat localhost_access_log 中,我看到以下请求信息

127.0.0.1 - - [01/Nov/2018:22:09:41 +0530] "GET /health/info HTTP/1.1" 302 - 0

127.0.0.1 - - [01/Nov/2018:22:09:41 +0530] "GET /login.jsp HTTP/1.1" 200 7649 16

127.0.0.1 - - [01/Nov/2018:22:09:41 +0530] "GET /health/191/6828a1fdefee40cf8dc74e825d8d2b0c/websocket HTTP/1.1" 302 - 0

127.0.0.1 - - [01/Nov/2018:22:09:41 +0530] "GET /login.jsp HTTP/1.1" 200 7649 0

我没有找到有关如何解决此问题及其原因的任何信息。

请帮我解决这个问题。