public DaemonMessagesClientEndpoint( String host, String port, boolean ssl, MessageEventService messageEventService ) throws KettleException { try { setAuthProperties(); String url = String.format( URL_TEMPLATE, ( ssl ? PRFX_WS_SSL : PRFX_WS ), host, port ); URI uri = new URI( url ); this.messageEventService = messageEventService; WebSocketContainer container = ContainerProvider.getWebSocketContainer(); container.connectToServer( this, ClientEndpointConfig.Builder.create() .encoders( Collections.singletonList( MessageEncoder.class ) ) .decoders( Collections.singletonList( MessageDecoder.class ) ) .configurator( new SessionConfigurator( uri, keytab, principal ) ) .build(), uri ); } catch ( Exception e ) { throw new KettleException( e ); } }
@Override protected ListenableFuture<WebSocketSession> doHandshakeInternal(WebSocketHandler webSocketHandler, HttpHeaders headers, final URI uri, List<String> protocols, List<WebSocketExtension> extensions, Map<String, Object> attributes) { int port = getPort(uri); InetSocketAddress localAddress = new InetSocketAddress(getLocalHost(), port); InetSocketAddress remoteAddress = new InetSocketAddress(uri.getHost(), port); final StandardWebSocketSession session = new StandardWebSocketSession(headers, attributes, localAddress, remoteAddress); final ClientEndpointConfig endpointConfig = ClientEndpointConfig.Builder.create() .configurator(new StandardWebSocketClientConfigurator(headers)) .preferredSubprotocols(protocols) .extensions(adaptExtensions(extensions)).build(); endpointConfig.getUserProperties().putAll(getUserProperties()); final Endpoint endpoint = new StandardWebSocketHandlerAdapter(webSocketHandler, session); Callable<WebSocketSession> connectTask = () -> { this.webSocketContainer.connectToServer(endpoint, endpointConfig, uri); return session; }; if (this.taskExecutor != null) { return this.taskExecutor.submitListenable(connectTask); } else { ListenableFutureTask<WebSocketSession> task = new ListenableFutureTask<>(connectTask); task.run(); return task; } }
private void connectToWebsocket() throws IOException { String webSocketUrl = getWebSocketUrl(); //@formatter:off ClientEndpointConfig config = ClientEndpointConfig.Builder.create() .configurator(new Configurator() { @Override public void beforeRequest(Map<String, List<String>> headers) { headers.put("Origin", Arrays.asList(baseUrl)); } }) .build(); //@formatter:on logger.info("Connecting to web socket [room=" + roomId + "]: " + webSocketUrl); try { webSocketSession = webSocketContainer.connectToServer(new Endpoint() { @Override public void onOpen(Session session, EndpointConfig config) { session.addMessageHandler(String.class, Room.this::handleWebSocketMessage); } @Override public void onError(Session session, Throwable t) { logger.log(Level.SEVERE, "Problem with web socket [room=" + roomId + "]. Leaving room.", t); leave(); } }, config, new URI(webSocketUrl)); } catch (DeploymentException | URISyntaxException e) { throw new IOException(e); } logger.info("Web socket connection successful [room=" + roomId + "]: " + webSocketUrl); }
builder.configurator(configurator);
configurator(configurator). decoders(Arrays.asList(annotation.decoders())). encoders(Arrays.asList(annotation.encoders())).
private Session connection(final URI uri) { final ClientEndpointConfig config = ClientEndpointConfig.Builder.create() .configurator(new ClientEndpointConfig.Configurator() { @Override public void beforeRequest(final Map<String, List<String>> headers) { if (WebSocketClient.this.authorization != null) { headers.put("Authorization", singletonList(WebSocketClient.this.authorization)); } super.beforeRequest(headers); } }) .build(); for (int i = 0; i < maxSendTries; i++) { try { return container.connectToServer(new Endpoint() { @Override public void onOpen(final Session session, final EndpointConfig endpointConfig) { // no-op } }, config, uri); } catch (final DeploymentException e) { throw new IllegalArgumentException(e); } catch (final IOException e) { // no-op: retry } } throw new IllegalStateException("Cannot connect to " + uri); }
@Override protected ListenableFuture<WebSocketSession> doHandshakeInternal(WebSocketHandler webSocketHandler, HttpHeaders headers, final URI uri, List<String> protocols, List<WebSocketExtension> extensions, Map<String, Object> attributes) { int port = getPort(uri); InetSocketAddress localAddress = new InetSocketAddress(getLocalHost(), port); InetSocketAddress remoteAddress = new InetSocketAddress(uri.getHost(), port); final StandardWebSocketSession session = new StandardWebSocketSession(headers, attributes, localAddress, remoteAddress); final ClientEndpointConfig endpointConfig = ClientEndpointConfig.Builder.create() .configurator(new StandardWebSocketClientConfigurator(headers)) .preferredSubprotocols(protocols) .extensions(adaptExtensions(extensions)).build(); endpointConfig.getUserProperties().putAll(getUserProperties()); final Endpoint endpoint = new StandardWebSocketHandlerAdapter(webSocketHandler, session); Callable<WebSocketSession> connectTask = () -> { webSocketContainer.connectToServer(endpoint, endpointConfig, uri); return session; }; if (this.taskExecutor != null) { return this.taskExecutor.submitListenable(connectTask); } else { ListenableFutureTask<WebSocketSession> task = new ListenableFutureTask<>(connectTask); task.run(); return task; } }
@Override protected ListenableFuture<WebSocketSession> doHandshakeInternal(WebSocketHandler webSocketHandler, HttpHeaders headers, final URI uri, List<String> protocols, List<WebSocketExtension> extensions, Map<String, Object> attributes) { int port = getPort(uri); InetSocketAddress localAddress = new InetSocketAddress(getLocalHost(), port); InetSocketAddress remoteAddress = new InetSocketAddress(uri.getHost(), port); final StandardWebSocketSession session = new StandardWebSocketSession(headers, attributes, localAddress, remoteAddress); final ClientEndpointConfig endpointConfig = ClientEndpointConfig.Builder.create() .configurator(new StandardWebSocketClientConfigurator(headers)) .preferredSubprotocols(protocols) .extensions(adaptExtensions(extensions)).build(); endpointConfig.getUserProperties().putAll(getUserProperties()); final Endpoint endpoint = new StandardWebSocketHandlerAdapter(webSocketHandler, session); Callable<WebSocketSession> connectTask = () -> { this.webSocketContainer.connectToServer(endpoint, endpointConfig, uri); return session; }; if (this.taskExecutor != null) { return this.taskExecutor.submitListenable(connectTask); } else { ListenableFutureTask<WebSocketSession> task = new ListenableFutureTask<>(connectTask); task.run(); return task; } }
private static WebSocketClientEndpoint connect(WebSocketContainer webSocketContainer, XDIWebSocketClient xdiWebSocketClient, URI xdiWebSocketEndpointUri) throws Exception { // init websocket endpoint List<String> preferredSubprotocols = Arrays.asList(new String[] { "xdi" }); List<Extension> extensions = null; List<Class<? extends Encoder>> encoders = null; List<Class<? extends Decoder>> decoders = null; ClientEndpointConfig.Configurator clientEndpointConfigConfigurator = new ClientEndpointConfig.Configurator() { }; ClientEndpointConfig.Builder clientEndpointConfigBuilder = ClientEndpointConfig.Builder.create(); clientEndpointConfigBuilder.preferredSubprotocols(preferredSubprotocols); clientEndpointConfigBuilder.extensions(extensions); clientEndpointConfigBuilder.encoders(encoders); clientEndpointConfigBuilder.decoders(decoders); clientEndpointConfigBuilder.configurator(clientEndpointConfigConfigurator); ClientEndpointConfig clientEndpointConfig = clientEndpointConfigBuilder.build(); clientEndpointConfig.getUserProperties().put("xdiWebSocketClient", xdiWebSocketClient); clientEndpointConfig.getUserProperties().put("xdiWebSocketEndpointUri", xdiWebSocketEndpointUri); // connect websocket endpoint WebSocketClientEndpoint webSocketEndpoint = new WebSocketClientEndpoint(); Session session = webSocketContainer.connectToServer(webSocketEndpoint, clientEndpointConfig, URI.create(xdiWebSocketEndpointUri.toString())); webSocketEndpoint.setSession(session); // done log.info("Connected WebSocket endpoint for " + xdiWebSocketEndpointUri + " with preferred subprotocols " + preferredSubprotocols); return webSocketEndpoint; }
public void setConfigurator(Configurator configurator) { this.configBuilder.configurator(configurator); }
@Override public void start(ILifecycleProgressMonitor monitor) throws SiteWhereException { WebSocketContainer container = ContainerProvider.getWebSocketContainer(); ClientEndpointConfig config = ClientEndpointConfig.Builder.create().configurator(new WebSocketConfigurator()) .build(); config.getUserProperties().put(PROP_EVENT_RECEIVER, this); try { session = container.connectToServer(getWebSocketClientClass(), config, URI.create(getWebSocketUrl())); } catch (DeploymentException e) { throw new SiteWhereException("Unable to connect to web socket.", e); } catch (IOException e) { throw new SiteWhereException("Unable to connect to web socket.", e); } }
public void setConfigurator(Configurator configurator) { this.configBuilder.configurator(configurator); }
/** * Returns a {@link ClientEndpointConfig} config that contains the headers * to be passed to the backend. * @since 0.14.0 */ private ClientEndpointConfig getClientEndpointConfig(final ServletUpgradeRequest req) { return ClientEndpointConfig.Builder.create().configurator( new ClientEndpointConfig.Configurator() { @Override public void beforeRequest(final Map<String, List<String>> headers) { /* Add request headers */ req.getHeaders().forEach(headers::putIfAbsent); } }).build(); }
/** * Returns a {@link ClientEndpointConfig} config that contains the headers * to be passed to the backend. * @since 0.14.0 */ private ClientEndpointConfig getClientEndpointConfig(final ServletUpgradeRequest req) { return ClientEndpointConfig.Builder.create().configurator( new ClientEndpointConfig.Configurator() { @Override public void beforeRequest(final Map<String, List<String>> headers) { /* Add request headers */ req.getHeaders().forEach(headers::putIfAbsent); } }).build(); }
@Override public void start(ILifecycleProgressMonitor monitor) throws SiteWhereException { WebSocketContainer container = ContainerProvider.getWebSocketContainer(); ClientEndpointConfig config = ClientEndpointConfig.Builder.create().configurator(new WebSocketConfigurator()) .build(); config.getUserProperties().put(PROP_EVENT_RECEIVER, this); try { session = container.connectToServer(getWebSocketClientClass(), config, URI.create(getWebSocketUrl())); } catch (DeploymentException e) { throw new SiteWhereException("Unable to connect to web socket.", e); } catch (IOException e) { throw new SiteWhereException("Unable to connect to web socket.", e); } }
private ClientEndpointConfig buildClientConfig(ClientEndpointConfig.Configurator configurator) { ClientEndpointConfig config = ClientEndpointConfig.Builder.create() .configurator(configurator) .build(); if (trustSelfSignedCerts) { SSLContext sslContext = buildSslContext(); Map<String, Object> userProperties = config.getUserProperties(); userProperties.put(WsWebSocketContainer.SSL_CONTEXT_PROPERTY, sslContext); } return config; }
private ClientEndpointConfig createEndpointConfig(Configurator configurator, String[] subProtocols) { return ClientEndpointConfig.Builder.create() .configurator(configurator) .preferredSubprotocols(Arrays.asList(subProtocols)) .build(); }
private ClientEndpointConfig buildClientConfig(ClientEndpointConfig.Configurator configurator) { ClientEndpointConfig config = ClientEndpointConfig.Builder.create().configurator(configurator).build(); if (trustSelfSignedCerts) { SSLContext sslContext = buildSslContext(); Map<String, Object> userProperties = config.getUserProperties(); userProperties.put(WsWebSocketContainer.SSL_CONTEXT_PROPERTY, sslContext); } return config; }
public void setConfigurator(Configurator configurator) { this.configBuilder.configurator(configurator); }
private ClientEndpointConfig createEndpointConfig(Configurator configurator, List<String> subProtocols) { return ClientEndpointConfig.Builder.create() .configurator(configurator) .preferredSubprotocols(subProtocols) .build(); }