@OnMessage(maxMessageSize = 111222) public String echoText(String msg) { switch (msg) { case "text-max": return String.format("%,d", session.getMaxTextMessageBufferSize()); case "binary-max": return String.format("%,d", session.getMaxBinaryMessageBufferSize()); case "decoders": return join(config.getDecoders(), ", "); case "encoders": return join(config.getEncoders(), ", "); case "subprotocols": if (serverConfig == null) { return "<not a ServerEndpointConfig>"; } else { List<String> protocols = new ArrayList<>(); protocols.addAll(serverConfig.getSubprotocols()); Collections.sort(protocols); return join(protocols, ", "); } case "configurator": if (serverConfig == null) { return "<not a ServerEndpointConfig>"; } else { return serverConfig.getConfigurator().getClass().getName(); } default: // normal echo return msg; } }
@Override public Configurator getConfigurator() { if (configurator == null) { configurator = new JavaxWebSocketConfigurator(delegate.getConfigurator()); } return configurator; }
@OnOpen public void startChatChannel(EndpointConfig config, Session session) { this.endpointConfig = (ServerEndpointConfig) config; ChatServerConfigurator csc = (ChatServerConfigurator) endpointConfig.getConfigurator(); this.transcript = csc.getTranscript(); this.session = session; try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException t) { } }
@Override public void register(ServerEndpointConfig serverConfig, String contextPath) throws DeploymentException { TyrusEndpointWrapper ew; Class<?> endpointClass = serverConfig.getEndpointClass(); boolean isEndpointClass = false; do { endpointClass = endpointClass.getSuperclass(); if (endpointClass.equals(Endpoint.class)) { isEndpointClass = true; } } while (!endpointClass.equals(Object.class)); if (isEndpointClass) { // we are pretty sure that endpoint class is javax.websocket.Endpoint descendant. //noinspection unchecked ew = new TyrusEndpointWrapper( (Class<? extends Endpoint>) serverConfig.getEndpointClass(), serverConfig, componentProviderService, webSocketContainer, contextPath, serverConfig.getConfigurator()); } else { final ErrorCollector collector = new ErrorCollector(); final AnnotatedEndpoint endpoint = AnnotatedEndpoint.fromClass( serverConfig.getEndpointClass(), componentProviderService, true, collector); final EndpointConfig config = endpoint.getEndpointConfig(); ew = new TyrusEndpointWrapper( endpoint, config, componentProviderService, webSocketContainer, contextPath, config instanceof ServerEndpointConfig ? ((ServerEndpointConfig) config).getConfigurator() : null); if (!collector.isEmpty()) { throw collector.composeComprehensiveException(); } } register(new TyrusEndpoint(ew)); }
/** * Invoked when server side handshake is ready to send response. * * <p>Changes in response parameter will be reflected in data sent back to client. * * @param request original request which caused this handshake. * @param response response to be send. */ public void onHandShakeResponse(UpgradeRequest request, UpgradeResponse response) { final EndpointConfig configuration = this.endpoint.getEndpointConfig(); if (configuration instanceof ServerEndpointConfig) { // http://java.net/jira/browse/TYRUS-62 final ServerEndpointConfig serverEndpointConfig = (ServerEndpointConfig) configuration; serverEndpointConfig .getConfigurator() .modifyHandshake(serverEndpointConfig, createHandshakeRequest(request), response); } }