List of usage examples for org.springframework.web.reactive.socket WebSocketHandler getSubProtocols
default List<String> getSubProtocols()
From source file:org.springframework.web.reactive.socket.client.JettyWebSocketClient.java
private Mono<Void> executeInternal(URI url, HttpHeaders headers, WebSocketHandler handler) { MonoProcessor<Void> completionMono = MonoProcessor.create(); return Mono.fromCallable(() -> { if (logger.isDebugEnabled()) { logger.debug("Connecting to " + url); }/*w w w. j a v a2s. co m*/ Object jettyHandler = createHandler(url, handler, completionMono); ClientUpgradeRequest request = new ClientUpgradeRequest(); request.setSubProtocols(handler.getSubProtocols()); UpgradeListener upgradeListener = new DefaultUpgradeListener(headers); return this.jettyClient.connect(jettyHandler, url, request, upgradeListener); }).then(completionMono); }
From source file:org.springframework.web.reactive.socket.client.ReactorNettyWebSocketClient.java
@Override public Mono<Void> execute(URI url, HttpHeaders requestHeaders, WebSocketHandler handler) { return getHttpClient().headers(nettyHeaders -> setNettyHeaders(requestHeaders, nettyHeaders)) .websocket(StringUtils.collectionToCommaDelimitedString(handler.getSubProtocols())) .uri(url.toString()).handle((inbound, outbound) -> { HttpHeaders responseHeaders = toHttpHeaders(inbound); String protocol = responseHeaders.getFirst("Sec-WebSocket-Protocol"); HandshakeInfo info = new HandshakeInfo(url, responseHeaders, Mono.empty(), protocol); NettyDataBufferFactory factory = new NettyDataBufferFactory(outbound.alloc()); WebSocketSession session = new ReactorNettyWebSocketSession(inbound, outbound, info, factory); if (logger.isDebugEnabled()) { logger.debug("Started session '" + session.getId() + "' for " + url); }// ww w . j ava 2 s . co m return handler.handle(session); }).doOnRequest(n -> { if (logger.isDebugEnabled()) { logger.debug("Connecting to " + url); } }).next(); }
From source file:org.springframework.web.reactive.socket.client.StandardWebSocketClient.java
private Mono<Void> executeInternal(URI url, HttpHeaders requestHeaders, WebSocketHandler handler) { MonoProcessor<Void> completionMono = MonoProcessor.create(); return Mono.fromCallable(() -> { if (logger.isDebugEnabled()) { logger.debug("Connecting to " + url); }/*www. j av a 2s .c o m*/ List<String> protocols = handler.getSubProtocols(); DefaultConfigurator configurator = new DefaultConfigurator(requestHeaders); Endpoint endpoint = createEndpoint(url, handler, completionMono, configurator); ClientEndpointConfig config = createEndpointConfig(configurator, protocols); return this.webSocketContainer.connectToServer(endpoint, config, url); }).subscribeOn(Schedulers.elastic()) // connectToServer is blocking .then(completionMono); }
From source file:org.springframework.web.reactive.socket.client.UndertowWebSocketClient.java
private Mono<Void> executeInternal(URI url, HttpHeaders headers, WebSocketHandler handler) { MonoProcessor<Void> completion = MonoProcessor.create(); return Mono.fromCallable(() -> { if (logger.isDebugEnabled()) { logger.debug("Connecting to " + url); }/* w ww. j a v a 2s. c om*/ List<String> protocols = handler.getSubProtocols(); ConnectionBuilder builder = createConnectionBuilder(url); DefaultNegotiation negotiation = new DefaultNegotiation(protocols, headers, builder); builder.setClientNegotiation(negotiation); return builder.connect().addNotifier(new IoFuture.HandlingNotifier<WebSocketChannel, Object>() { @Override public void handleDone(WebSocketChannel channel, Object attachment) { handleChannel(url, handler, completion, negotiation, channel); } @Override public void handleFailed(IOException ex, Object attachment) { completion.onError(new IllegalStateException("Failed to connect to " + url, ex)); } }, null); }).then(completion); }
From source file:org.springframework.web.reactive.socket.client.WebSocketClientSupport.java
protected List<String> beforeHandshake(URI url, HttpHeaders requestHeaders, WebSocketHandler handler) { if (logger.isDebugEnabled()) { logger.debug("Executing handshake to " + url); }//from w w w. ja v a 2s .co m return handler.getSubProtocols(); }
From source file:org.springframework.web.reactive.socket.server.support.HandshakeWebSocketService.java
@Nullable private String selectProtocol(HttpHeaders headers, WebSocketHandler handler) { String protocolHeader = headers.getFirst(SEC_WEBSOCKET_PROTOCOL); if (protocolHeader != null) { List<String> supportedProtocols = handler.getSubProtocols(); for (String protocol : StringUtils.commaDelimitedListToStringArray(protocolHeader)) { if (supportedProtocols.contains(protocol)) { return protocol; }/* w w w .j av a 2 s . co m*/ } } return null; }