提交 0dcc5c04 编写于 作者: R Rossen Stoyanchev

Adjust SockJS use of ServerHttpResponse close vs flush

上级 13ce20b1
...@@ -60,7 +60,7 @@ public class WebSocketHttpRequestHandler implements HttpRequestHandler { ...@@ -60,7 +60,7 @@ public class WebSocketHttpRequestHandler implements HttpRequestHandler {
private final HandshakeHandler handshakeHandler; private final HandshakeHandler handshakeHandler;
private final WebSocketHandler webSocketHandler; private final WebSocketHandler wsHandler;
private final List<HandshakeInterceptor> interceptors = new ArrayList<HandshakeInterceptor>(); private final List<HandshakeInterceptor> interceptors = new ArrayList<HandshakeInterceptor>();
...@@ -72,7 +72,7 @@ public class WebSocketHttpRequestHandler implements HttpRequestHandler { ...@@ -72,7 +72,7 @@ public class WebSocketHttpRequestHandler implements HttpRequestHandler {
public WebSocketHttpRequestHandler( WebSocketHandler webSocketHandler, HandshakeHandler handshakeHandler) { public WebSocketHttpRequestHandler( WebSocketHandler webSocketHandler, HandshakeHandler handshakeHandler) {
Assert.notNull(webSocketHandler, "webSocketHandler must not be null"); Assert.notNull(webSocketHandler, "webSocketHandler must not be null");
Assert.notNull(handshakeHandler, "handshakeHandler must not be null"); Assert.notNull(handshakeHandler, "handshakeHandler must not be null");
this.webSocketHandler = decorateWebSocketHandler(webSocketHandler); this.wsHandler = decorateWebSocketHandler(webSocketHandler);
this.handshakeHandler = handshakeHandler; this.handshakeHandler = handshakeHandler;
} }
...@@ -100,9 +100,9 @@ public class WebSocketHttpRequestHandler implements HttpRequestHandler { ...@@ -100,9 +100,9 @@ public class WebSocketHttpRequestHandler implements HttpRequestHandler {
* <p>By default {@link ExceptionWebSocketHandlerDecorator} and * <p>By default {@link ExceptionWebSocketHandlerDecorator} and
* {@link LoggingWebSocketHandlerDecorator} are applied are added. * {@link LoggingWebSocketHandlerDecorator} are applied are added.
*/ */
protected WebSocketHandler decorateWebSocketHandler(WebSocketHandler handler) { protected WebSocketHandler decorateWebSocketHandler(WebSocketHandler wsHandler) {
handler = new ExceptionWebSocketHandlerDecorator(handler); wsHandler = new ExceptionWebSocketHandlerDecorator(wsHandler);
return new LoggingWebSocketHandlerDecorator(handler); return new LoggingWebSocketHandlerDecorator(wsHandler);
} }
@Override @Override
...@@ -112,7 +112,7 @@ public class WebSocketHttpRequestHandler implements HttpRequestHandler { ...@@ -112,7 +112,7 @@ public class WebSocketHttpRequestHandler implements HttpRequestHandler {
ServerHttpRequest request = new ServletServerHttpRequest(servletRequest); ServerHttpRequest request = new ServletServerHttpRequest(servletRequest);
ServerHttpResponse response = new ServletServerHttpResponse(servletResponse); ServerHttpResponse response = new ServletServerHttpResponse(servletResponse);
HandshakeInterceptorChain chain = new HandshakeInterceptorChain(this.interceptors, this.webSocketHandler); HandshakeInterceptorChain chain = new HandshakeInterceptorChain(this.interceptors, this.wsHandler);
HandshakeFailureException failure = null; HandshakeFailureException failure = null;
try { try {
...@@ -120,8 +120,9 @@ public class WebSocketHttpRequestHandler implements HttpRequestHandler { ...@@ -120,8 +120,9 @@ public class WebSocketHttpRequestHandler implements HttpRequestHandler {
if (!chain.applyBeforeHandshake(request, response, attributes)) { if (!chain.applyBeforeHandshake(request, response, attributes)) {
return; return;
} }
this.handshakeHandler.doHandshake(request, response, this.webSocketHandler, attributes); this.handshakeHandler.doHandshake(request, response, this.wsHandler, attributes);
chain.applyAfterHandshake(request, response, null); chain.applyAfterHandshake(request, response, null);
response.close();
} }
catch (HandshakeFailureException ex) { catch (HandshakeFailureException ex) {
failure = ex; failure = ex;
...@@ -134,7 +135,6 @@ public class WebSocketHttpRequestHandler implements HttpRequestHandler { ...@@ -134,7 +135,6 @@ public class WebSocketHttpRequestHandler implements HttpRequestHandler {
chain.applyAfterHandshake(request, response, failure); chain.applyAfterHandshake(request, response, failure);
throw failure; throw failure;
} }
response.flush();
} }
} }
......
...@@ -43,19 +43,19 @@ public class SockJsHttpRequestHandler implements HttpRequestHandler { ...@@ -43,19 +43,19 @@ public class SockJsHttpRequestHandler implements HttpRequestHandler {
private final SockJsService sockJsService; private final SockJsService sockJsService;
private final WebSocketHandler webSocketHandler; private final WebSocketHandler wsHandler;
/** /**
* Create a new {@link SockJsHttpRequestHandler}. * Create a new {@link SockJsHttpRequestHandler}.
* @param sockJsService the SockJS service * @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(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.sockJsService = sockJsService;
this.webSocketHandler = decorateWebSocketHandler(webSocketHandler); this.wsHandler = decorateWebSocketHandler(wsHandler);
} }
...@@ -65,9 +65,9 @@ public class SockJsHttpRequestHandler implements HttpRequestHandler { ...@@ -65,9 +65,9 @@ public class SockJsHttpRequestHandler implements HttpRequestHandler {
* <p>By default {@link ExceptionWebSocketHandlerDecorator} and * <p>By default {@link ExceptionWebSocketHandlerDecorator} and
* {@link LoggingWebSocketHandlerDecorator} are applied are added. * {@link LoggingWebSocketHandlerDecorator} are applied are added.
*/ */
protected WebSocketHandler decorateWebSocketHandler(WebSocketHandler handler) { protected WebSocketHandler decorateWebSocketHandler(WebSocketHandler wsHandler) {
handler = new ExceptionWebSocketHandlerDecorator(handler); wsHandler = new ExceptionWebSocketHandlerDecorator(wsHandler);
return new LoggingWebSocketHandlerDecorator(handler); return new LoggingWebSocketHandlerDecorator(wsHandler);
} }
@Override @Override
...@@ -78,7 +78,7 @@ public class SockJsHttpRequestHandler implements HttpRequestHandler { ...@@ -78,7 +78,7 @@ public class SockJsHttpRequestHandler implements HttpRequestHandler {
ServerHttpResponse response = new ServletServerHttpResponse(servletResponse); ServerHttpResponse response = new ServletServerHttpResponse(servletResponse);
try { try {
this.sockJsService.handleRequest(request, response, this.webSocketHandler); this.sockJsService.handleRequest(request, response, this.wsHandler);
} }
catch (Throwable t) { catch (Throwable t) {
throw new SockJsException("Uncaught failure in SockJS request, uri=" + request.getURI(), t); throw new SockJsException("Uncaught failure in SockJS request, uri=" + request.getURI(), t);
......
...@@ -320,8 +320,7 @@ public abstract class AbstractSockJsService implements SockJsService { ...@@ -320,8 +320,7 @@ public abstract class AbstractSockJsService implements SockJsService {
} }
handleTransportRequest(request, response, wsHandler, sessionId, transport); handleTransportRequest(request, response, wsHandler, sessionId, transport);
} }
response.close();
response.flush();
} }
catch (IOException ex) { catch (IOException ex) {
throw new SockJsException("Failed to write to the response", null, ex); throw new SockJsException("Failed to write to the response", null, ex);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册