@Resource(name = "ws.acceptor") public void setWsAcceptor(WsAcceptor acceptor) { this.webSocketExtensionFactory = acceptor.getWebSocketExtensionFactory(); }
private void initWsBridgeAcceptorMap() { wsBridgeAcceptorMap = new HashMap<>(); Set<EnabledWsTransport> enabledTransports = resolveEnabledTransports(); if ( enabledTransports.contains(EnabledWsTransport.wseb)) { wsBridgeAcceptorMap.put(WSE_PROTOCOL_NAME, wsebAcceptor); } if ( enabledTransports.contains(EnabledWsTransport.wsn)) { wsBridgeAcceptorMap.put(WS_DRAFT_PROTOCOL_NAME, wsnAcceptor); wsBridgeAcceptorMap.put(WS_NATIVE_PROTOCOL_NAME, wsnAcceptor); } }
WsTransport(Properties configuration) { extensionFactory = WebSocketExtensionFactory.newInstance(); acceptor = new WsAcceptor(extensionFactory); acceptor.setConfiguration(configuration); connector = new WsConnector(extensionFactory); }
@Override public void bind(ResourceAddress address, IoHandler handler, BridgeSessionInitializer<? extends IoFuture> initializer) { // bind only address with matching scheme URI location = address.getResource(); String schemeName = location.getScheme(); if (!canBind(schemeName)) { throw new IllegalArgumentException(format("Unexpected scheme \"%s\" for URI: %s", schemeName, location)); } // note: ignore BIND_ALTERNATE (used by delegate acceptors) do { BridgeAcceptor bridgeAcceptor = selectWsAcceptor(address); if ( bridgeAcceptor != null ) { bridgeAcceptor.bind(address, handler, initializer); } else { if (logger.isDebugEnabled()) { String format = "No bridge acceptor found for address '%s'. Is the %s transport enabled?"; logger.warn(format(format, address.getExternalURI(), URIUtils.getScheme(address.getExternalURI()))); } } address = address.getOption(ALTERNATE); } while (address != null); }
private BridgeAcceptor selectWsAcceptor(ResourceAddress bindAddress) { if (wsBridgeAcceptorMap == null) { initWsBridgeAcceptorMap(); } if ( bindAddress.getTransport() == null ) { throw new RuntimeException(format("Cannot select a WebSocket acceptor for address '%s'.", bindAddress)); } String nextProtocol = bindAddress.getTransport().getOption(NEXT_PROTOCOL); if (nextProtocol == null || nextProtocol.isEmpty()) { throw new RuntimeException(format("Cannot find a transport nextProtocol for address '%s'.", bindAddress)); } return wsBridgeAcceptorMap.get(nextProtocol); }
@Override public UnbindFuture unbind(ResourceAddress address) { UnbindFuture future = DefaultUnbindFuture.succeededFuture(); // note: ignore BIND_ALTERNATE (used by delegate acceptors) do { BridgeAcceptor bridgeAcceptor = selectWsAcceptor(address); if ( bridgeAcceptor == null ) { if (logger.isTraceEnabled()) { logger.trace(format("The acceptor for %s is not enabled.", address.getExternalURI())); } } else { future = combineFutures(future, bridgeAcceptor.unbind(address)); } address = address.getOption(ALTERNATE); } while (address != null); return future; }
@Resource(name = "ws.acceptor") public void setWsAcceptor(WsAcceptor acceptor) { this.webSocketExtensionFactory = acceptor.getWebSocketExtensionFactory(); }
@Resource(name = "ws.acceptor") public void setWsAcceptor(WsAcceptor acceptor) { this.webSocketExtensionFactory = acceptor.getWebSocketExtensionFactory(); }