protected Delegate connect(String uri, TransportListener listener, List<Mutable> messages) { try { if (logger.isDebugEnabled()) logger.debug("Opening websocket session to {}", uri); _webSocketContainer.setDefaultMaxSessionIdleTimeout(getIdleTimeout()); ClientEndpointConfig.Configurator configurator = new Configurator(); String protocol = getProtocol(); ClientEndpointConfig config = ClientEndpointConfig.Builder.create() .preferredSubprotocols(protocol == null ? null : Collections.singletonList(protocol)) .configurator(configurator) .build(); Delegate delegate = connect(_webSocketContainer, config, uri); _webSocketConnected = true; return delegate; } catch (ConnectException | SocketTimeoutException | UnresolvedAddressException x) { // Cannot connect, assume the server supports WebSocket until proved otherwise listener.onFailure(x, messages); } catch (Throwable x) { _webSocketSupported = isStickyReconnect() && _webSocketConnected; listener.onFailure(x, messages); } return null; }
protected Session connect(String uri, TransportListener listener, Mutable[] messages) { Session session = _wsSession; if (session != null) return session; try { logger.debug("Opening websocket session to {}", uri); session = connect(uri); _webSocketConnected = true; if (isAborted()) listener.onFailure(new Exception("Aborted"), messages); return _wsSession = session; } catch (ConnectException | SocketTimeoutException | UnresolvedAddressException x) { // Cannot connect, assume the server supports WebSocket until proved otherwise listener.onFailure(x, messages); } catch (Exception x) { _webSocketSupported = isStickyReconnect() && _webSocketConnected; listener.onFailure(x, messages); } return null; }