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

Adjust SockJS use of ServerHttpResponse close vs flush

上级 13ce20b1
......@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册