|
|
|
@ -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 { |
|
|
|
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 { |
|
|
|
* <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 { |
|
|
|
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 { |
|
|
|
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 { |
|
|
|
chain.applyAfterHandshake(request, response, failure); |
|
|
|
chain.applyAfterHandshake(request, response, failure); |
|
|
|
throw failure; |
|
|
|
throw failure; |
|
|
|
} |
|
|
|
} |
|
|
|
response.flush(); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|