Adjust SockJS use of ServerHttpResponse close vs flush
This commit is contained in:
@@ -60,7 +60,7 @@ public class WebSocketHttpRequestHandler implements HttpRequestHandler {
|
||||
|
||||
private final HandshakeHandler handshakeHandler;
|
||||
|
||||
private final WebSocketHandler webSocketHandler;
|
||||
private final WebSocketHandler wsHandler;
|
||||
|
||||
private final List<HandshakeInterceptor> interceptors = new ArrayList<HandshakeInterceptor>();
|
||||
|
||||
@@ -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 {
|
||||
* <p>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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
* <p>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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user