@Override public Object createWebSocket(ServletUpgradeRequest req, ServletUpgradeResponse resp) { try { for (String subprotocol : req.getSubProtocols()) { if ("xmpp".equals(subprotocol)) { resp.setAcceptedSubProtocol(subprotocol); return new XmppWebSocket(); } } } catch (Exception e) { Log.warn(MessageFormat.format("Unable to load websocket factory: {0} ({1})", e.getClass().getName(), e.getMessage())); } Log.warn("Failed to create websocket for {}:{} make a request at {}", req.getRemoteAddress(), req.getRemotePort(), req.getRequestPath() ); return null; } });
@Override public void start() { if (!isRunning()) { this.running = true; try { if (this.factory == null) { this.factory = new WebSocketServerFactory(this.servletContext, this.policy); } this.factory.setCreator((request, response) -> { WebSocketHandlerContainer container = containerHolder.get(); Assert.state(container != null, "Expected WebSocketHandlerContainer"); response.setAcceptedSubProtocol(container.getSelectedProtocol()); response.setExtensions(container.getExtensionConfigs()); return container.getHandler(); }); this.factory.start(); } catch (Throwable ex) { throw new IllegalStateException("Unable to start Jetty WebSocketServerFactory", ex); } } }
@Override public void start() { synchronized (this.lifecycleMonitor) { ServletContext servletContext = this.servletContext; if (!isRunning() && servletContext != null) { this.running = true; try { this.factory = (this.webSocketPolicy != null ? new WebSocketServerFactory(servletContext, this.webSocketPolicy) : new WebSocketServerFactory(servletContext)); this.factory.setCreator((request, response) -> { WebSocketHandlerContainer container = adapterHolder.get(); String protocol = container.getProtocol(); if (protocol != null) { response.setAcceptedSubProtocol(protocol); } return container.getAdapter(); }); this.factory.start(); } catch (Throwable ex) { throw new IllegalStateException("Unable to start WebSocketServerFactory", ex); } } } }
@Override public Object createWebSocket(ServletUpgradeRequest req, ServletUpgradeResponse resp) { // Borrow WebSocket sub-protocols as input for channels and filters, // which are at position 0 and 1 in the sub-protocols array MetricWebSocket socket = new MetricWebSocket(req.getSubProtocols().get(0), req.getSubProtocols().get(1), wsConnectionManager); resp.setAcceptedSubProtocol(req.getSubProtocols().get(0)); return socket; }
@Override public void configure(final WebSocketServletFactory factory) { factory.setCreator((req, resp) -> { resp.setAcceptedSubProtocol(AMQP_WEBSOCKET_SUBPROTOCOL); return new AmqpWebSocket(); }); }
@Override public Object createWebSocket(ServletUpgradeRequest req, ServletUpgradeResponse resp) { try { for (String subprotocol : req.getSubProtocols()) { if ("xmpp".equals(subprotocol)) { resp.setAcceptedSubProtocol(subprotocol); return new XmppWebSocket(); } } } catch (Exception e) { Log.warn(MessageFormat.format("Unable to load websocket factory: {0} ({1})", e.getClass().getName(), e.getMessage())); } Log.warn("Failed to create websocket for {}:{} make a request at {}", req.getRemoteAddress(), req.getRemotePort(), req.getRequestPath() ); return null; } });
public Object createWebSocket( final ServletUpgradeRequest req, final ServletUpgradeResponse res ) { final Set<String> allowSubProtocols = this.config.getSubProtocols(); if ( allowSubProtocols.isEmpty() ) { return doCreateWebSocket(); } for ( final String protocol : req.getSubProtocols() ) { if ( allowSubProtocols.contains( protocol ) ) { res.setAcceptedSubProtocol( protocol ); return doCreateWebSocket(); } } return null; }
@Override public void start() { synchronized (this.lifecycleMonitor) { if (!isRunning() && this.servletContext != null) { this.running = true; try { this.factory = new WebSocketServerFactory(this.servletContext); this.factory.setCreator((request, response) -> { WebSocketHandlerContainer container = adapterHolder.get(); String protocol = container.getProtocol().orElse(null); if (protocol != null) { response.setAcceptedSubProtocol(protocol); } return container.getAdapter(); }); this.factory.start(); } catch (Throwable ex) { throw new IllegalStateException("Unable to start WebSocketServerFactory", ex); } } } }
@Override public Object createWebSocket(ServletUpgradeRequest req, ServletUpgradeResponse resp) { // Web browsers don't support sending custom headers on web socket creation. // So use the optional "Sec-WebSocket-Protocol" header, which is a list of sub-protocols. // For now, ensure there is exactly one sub-protocol which is the auth header. if (req.getSubProtocols().size() != 1) { return sendForbiddenAsResponse(resp); } final String authHeader = req.getSubProtocols().get(0); final String token; try { token = TokenUtils.getTokenFromAuthHeader(authHeader); } catch (NotAuthorizedException ignored) { return sendForbiddenAsResponse(resp); } final UserName userName; try { userName = new UserName(tokenManager.validateToken(token).username); } catch (final IllegalArgumentException ignored) { return sendForbiddenAsResponse(resp); } DremioSocket socket = new DremioSocket(userName); sockets.put(socket.getSocketId(), socket); resp.setAcceptedSubProtocol(authHeader); return socket; } }
@Override public void start() { if (!isRunning()) { this.running = true; try { if (this.factory == null) { this.factory = new WebSocketServerFactory(this.servletContext, this.policy); } this.factory.setCreator((request, response) -> { WebSocketHandlerContainer container = containerHolder.get(); Assert.state(container != null, "Expected WebSocketHandlerContainer"); response.setAcceptedSubProtocol(container.getSelectedProtocol()); response.setExtensions(container.getExtensionConfigs()); return container.getHandler(); }); this.factory.start(); } catch (Throwable ex) { throw new IllegalStateException("Unable to start Jetty WebSocketServerFactory", ex); } } }
@Override public void start() { if (!isRunning()) { this.running = true; try { if (this.factory == null) { this.factory = new WebSocketServerFactory(servletContext, this.policy); } this.factory.setCreator((request, response) -> { WebSocketHandlerContainer container = containerHolder.get(); Assert.state(container != null, "Expected WebSocketHandlerContainer"); response.setAcceptedSubProtocol(container.getSelectedProtocol()); response.setExtensions(container.getExtensionConfigs()); return container.getHandler(); }); this.factory.start(); } catch (Throwable ex) { throw new IllegalStateException("Unable to start Jetty WebSocketServerFactory", ex); } } }
((MQTTSocket) socket).setTransportOptions(new HashMap<>(transportOptions)); ((MQTTSocket) socket).setPeerCertificates(req.getCertificates()); resp.setAcceptedSubProtocol(getAcceptedSubProtocol(mqttProtocols, req.getSubProtocols(), "mqtt")); break; case UNKNOWN: socket = new StompSocket(HttpTransportUtils.generateWsRemoteAddress(req.getHttpServletRequest())); ((StompSocket) socket).setPeerCertificates(req.getCertificates()); resp.setAcceptedSubProtocol(getAcceptedSubProtocol(stompProtocols, req.getSubProtocols(), "stomp")); break; default:
((MQTTSocket) socket).setTransportOptions(new HashMap<>(transportOptions)); ((MQTTSocket) socket).setPeerCertificates(req.getCertificates()); resp.setAcceptedSubProtocol(getAcceptedSubProtocol(mqttProtocols, req.getSubProtocols(), "mqtt")); break; case UNKNOWN: socket = new StompSocket(HttpTransportUtils.generateWsRemoteAddress(req.getHttpServletRequest())); ((StompSocket) socket).setPeerCertificates(req.getCertificates()); resp.setAcceptedSubProtocol(getAcceptedSubProtocol(stompProtocols, req.getSubProtocols(), "stomp")); break; default:
((MQTTSocket) socket).setTransportOptions(new HashMap<>(transportOptions)); ((MQTTSocket) socket).setPeerCertificates(req.getCertificates()); resp.setAcceptedSubProtocol(getAcceptedSubProtocol(mqttProtocols, req.getSubProtocols(), "mqtt")); break; case UNKNOWN: socket = new StompSocket(HttpTransportUtils.generateWsRemoteAddress(req.getHttpServletRequest())); ((StompSocket) socket).setPeerCertificates(req.getCertificates()); resp.setAcceptedSubProtocol(getAcceptedSubProtocol(stompProtocols, req.getSubProtocols(), "stomp")); break; default:
private WebSocketListener findWSTransport(ServletUpgradeRequest request, ServletUpgradeResponse response) { WSTransportProxy proxy = null; for (String subProtocol : request.getSubProtocols()) { try { String remoteAddress = HttpTransportUtils.generateWsRemoteAddress(request.getHttpServletRequest(), subProtocol); URI remoteURI = new URI(remoteAddress); TransportFactory factory = TransportFactory.findTransportFactory(remoteURI); if (factory instanceof BrokerServiceAware) { ((BrokerServiceAware) factory).setBrokerService(brokerService); } Transport transport = factory.doConnect(remoteURI); proxy = new WSTransportProxy(remoteAddress, transport); proxy.setPeerCertificates(request.getCertificates()); proxy.setTransportOptions(transportOptions); response.setAcceptedSubProtocol(proxy.getSubProtocol()); } catch (Exception e) { proxy = null; // Keep going and try any other sub-protocols present. continue; } } return proxy; }
private WebSocketListener findWSTransport(ServletUpgradeRequest request, ServletUpgradeResponse response) { WSTransportProxy proxy = null; for (String subProtocol : request.getSubProtocols()) { try { String remoteAddress = HttpTransportUtils.generateWsRemoteAddress(request.getHttpServletRequest(), subProtocol); URI remoteURI = new URI(remoteAddress); TransportFactory factory = TransportFactory.findTransportFactory(remoteURI); if (factory instanceof BrokerServiceAware) { ((BrokerServiceAware) factory).setBrokerService(brokerService); } Transport transport = factory.doConnect(remoteURI); proxy = new WSTransportProxy(remoteAddress, transport); proxy.setPeerCertificates(request.getCertificates()); proxy.setTransportOptions(transportOptions); response.setAcceptedSubProtocol(proxy.getSubProtocol()); } catch (Exception e) { proxy = null; // Keep going and try any other sub-protocols present. continue; } } return proxy; }
private WebSocketListener findWSTransport(ServletUpgradeRequest request, ServletUpgradeResponse response) { WSTransportProxy proxy = null; for (String subProtocol : request.getSubProtocols()) { try { String remoteAddress = HttpTransportUtils.generateWsRemoteAddress(request.getHttpServletRequest(), subProtocol); URI remoteURI = new URI(remoteAddress); TransportFactory factory = TransportFactory.findTransportFactory(remoteURI); if (factory instanceof BrokerServiceAware) { ((BrokerServiceAware) factory).setBrokerService(brokerService); } Transport transport = factory.doConnect(remoteURI); proxy = new WSTransportProxy(remoteAddress, transport); proxy.setPeerCertificates(request.getCertificates()); proxy.setTransportOptions(transportOptions); response.setAcceptedSubProtocol(proxy.getSubProtocol()); } catch (Exception e) { proxy = null; // Keep going and try any other sub-protocols present. continue; } } return proxy; }
if (StringUtil.isNotBlank(subprotocol)) resp.setAcceptedSubProtocol(subprotocol);