private HttpServletRequest getHttpServletRequest(ServerHttpRequest request) { Assert.isInstanceOf(AbstractServerHttpRequest.class, request, "ServletServerHttpRequest required"); return ((AbstractServerHttpRequest) request).getNativeRequest(); }
private HttpServletRequest getHttpServletRequest(ServerHttpRequest request) { Assert.isInstanceOf(AbstractServerHttpRequest.class, request); return ((AbstractServerHttpRequest) request).getNativeRequest(); }
@Override public Mono<Void> upgrade(ServerWebExchange exchange, WebSocketHandler handler, @Nullable String subProtocol, Supplier<HandshakeInfo> handshakeInfoFactory) { ServerHttpRequest request = exchange.getRequest(); Assert.isInstanceOf(AbstractServerHttpRequest.class, request); HttpServerExchange httpExchange = ((AbstractServerHttpRequest) request).getNativeRequest(); Set<String> protocols = (subProtocol != null ? Collections.singleton(subProtocol) : Collections.emptySet()); Hybi13Handshake handshake = new Hybi13Handshake(protocols, false); List<Handshake> handshakes = Collections.singletonList(handshake); HandshakeInfo handshakeInfo = handshakeInfoFactory.get(); DataBufferFactory bufferFactory = exchange.getResponse().bufferFactory(); try { DefaultCallback callback = new DefaultCallback(handshakeInfo, handler, bufferFactory); new WebSocketProtocolHandshakeHandler(handshakes, callback).handleRequest(httpExchange); } catch (Exception ex) { return Mono.error(ex); } return Mono.empty(); }