diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/server/support/WebSocketHttpRequestHandler.java b/spring-websocket/src/main/java/org/springframework/web/socket/server/support/WebSocketHttpRequestHandler.java index 95df66ad68aa4debe7818e6379de697980f0eac4..e5d86e937a067c54e04fe0d13e54d0df4e97fc01 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/server/support/WebSocketHttpRequestHandler.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/server/support/WebSocketHttpRequestHandler.java @@ -60,7 +60,7 @@ public class WebSocketHttpRequestHandler implements HttpRequestHandler { private final HandshakeHandler handshakeHandler; - private final WebSocketHandler webSocketHandler; + private final WebSocketHandler wsHandler; private final List interceptors = new ArrayList(); @@ -72,7 +72,7 @@ public class WebSocketHttpRequestHandler implements HttpRequestHandler { public WebSocketHttpRequestHandler( WebSocketHandler webSocketHandler, HandshakeHandler handshakeHandler) { Assert.notNull(webSocketHandler, "webSocketHandler must not be null"); Assert.notNull(handshakeHandler, "handshakeHandler must not be null"); - this.webSocketHandler = decorateWebSocketHandler(webSocketHandler); + this.wsHandler = decorateWebSocketHandler(webSocketHandler); this.handshakeHandler = handshakeHandler; } @@ -100,9 +100,9 @@ public class WebSocketHttpRequestHandler implements HttpRequestHandler { *

By default {@link ExceptionWebSocketHandlerDecorator} and * {@link LoggingWebSocketHandlerDecorator} are applied are added. */ - protected WebSocketHandler decorateWebSocketHandler(WebSocketHandler handler) { - handler = new ExceptionWebSocketHandlerDecorator(handler); - return new LoggingWebSocketHandlerDecorator(handler); + protected WebSocketHandler decorateWebSocketHandler(WebSocketHandler wsHandler) { + wsHandler = new ExceptionWebSocketHandlerDecorator(wsHandler); + return new LoggingWebSocketHandlerDecorator(wsHandler); } @Override @@ -112,7 +112,7 @@ public class WebSocketHttpRequestHandler implements HttpRequestHandler { ServerHttpRequest request = new ServletServerHttpRequest(servletRequest); ServerHttpResponse response = new ServletServerHttpResponse(servletResponse); - HandshakeInterceptorChain chain = new HandshakeInterceptorChain(this.interceptors, this.webSocketHandler); + HandshakeInterceptorChain chain = new HandshakeInterceptorChain(this.interceptors, this.wsHandler); HandshakeFailureException failure = null; try { @@ -120,8 +120,9 @@ public class WebSocketHttpRequestHandler implements HttpRequestHandler { if (!chain.applyBeforeHandshake(request, response, attributes)) { return; } - this.handshakeHandler.doHandshake(request, response, this.webSocketHandler, attributes); + this.handshakeHandler.doHandshake(request, response, this.wsHandler, attributes); chain.applyAfterHandshake(request, response, null); + response.close(); } catch (HandshakeFailureException ex) { failure = ex; @@ -134,7 +135,6 @@ public class WebSocketHttpRequestHandler implements HttpRequestHandler { chain.applyAfterHandshake(request, response, failure); throw failure; } - response.flush(); } } diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/SockJsHttpRequestHandler.java b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/SockJsHttpRequestHandler.java index e2d5073631a24577476693828273bc961cdf1bd7..495989aa0f09c4574360e20cf795356b5988fdfb 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/SockJsHttpRequestHandler.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/SockJsHttpRequestHandler.java @@ -43,19 +43,19 @@ public class SockJsHttpRequestHandler implements HttpRequestHandler { private final SockJsService sockJsService; - private final WebSocketHandler webSocketHandler; + private final WebSocketHandler wsHandler; /** * Create a new {@link SockJsHttpRequestHandler}. * @param sockJsService the SockJS service - * @param webSocketHandler the websocket handler + * @param wsHandler the websocket handler */ - public SockJsHttpRequestHandler(SockJsService sockJsService, WebSocketHandler webSocketHandler) { + public SockJsHttpRequestHandler(SockJsService sockJsService, WebSocketHandler wsHandler) { Assert.notNull(sockJsService, "sockJsService must not be null"); - Assert.notNull(webSocketHandler, "webSocketHandler must not be null"); + Assert.notNull(wsHandler, "webSocketHandler must not be null"); this.sockJsService = sockJsService; - this.webSocketHandler = decorateWebSocketHandler(webSocketHandler); + this.wsHandler = decorateWebSocketHandler(wsHandler); } @@ -65,9 +65,9 @@ public class SockJsHttpRequestHandler implements HttpRequestHandler { *

By default {@link ExceptionWebSocketHandlerDecorator} and * {@link LoggingWebSocketHandlerDecorator} are applied are added. */ - protected WebSocketHandler decorateWebSocketHandler(WebSocketHandler handler) { - handler = new ExceptionWebSocketHandlerDecorator(handler); - return new LoggingWebSocketHandlerDecorator(handler); + protected WebSocketHandler decorateWebSocketHandler(WebSocketHandler wsHandler) { + wsHandler = new ExceptionWebSocketHandlerDecorator(wsHandler); + return new LoggingWebSocketHandlerDecorator(wsHandler); } @Override @@ -78,7 +78,7 @@ public class SockJsHttpRequestHandler implements HttpRequestHandler { ServerHttpResponse response = new ServletServerHttpResponse(servletResponse); try { - this.sockJsService.handleRequest(request, response, this.webSocketHandler); + this.sockJsService.handleRequest(request, response, this.wsHandler); } catch (Throwable t) { throw new SockJsException("Uncaught failure in SockJS request, uri=" + request.getURI(), t); diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/support/AbstractSockJsService.java b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/support/AbstractSockJsService.java index 7a1fbc1502724719f88b9307286852936b29a1a9..9e6f3cf35e5c0b684ed2347cf80ae5f82edfc7b7 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/support/AbstractSockJsService.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/support/AbstractSockJsService.java @@ -320,8 +320,7 @@ public abstract class AbstractSockJsService implements SockJsService { } handleTransportRequest(request, response, wsHandler, sessionId, transport); } - - response.flush(); + response.close(); } catch (IOException ex) { throw new SockJsException("Failed to write to the response", null, ex);