List of usage examples for io.vertx.core.http ServerWebSocket query
@Nullable String query();
From source file:io.advantageous.qbit.vertx.http.server.VertxServerUtils.java
License:Apache License
private MultiMap<String, String> paramMap(ServerWebSocket vertxServerWebSocket) { String query = vertxServerWebSocket.query(); MultiMap<String, String> paramMap = MultiMap.empty(); if (!Str.isEmpty(query)) { final String[] params = StringScanner.split(query, '&'); if (params.length > 0) { paramMap = new MultiMapImpl<>(); for (String param : params) { final String[] keyValue = StringScanner.split(param, '='); if (keyValue.length == 2) { String key = keyValue[0]; String value = keyValue[1]; try { key = URLDecoder.decode(key, "UTF-8"); value = URLDecoder.decode(value, "UTF-8"); paramMap.add(key, value); } catch (UnsupportedEncodingException e) { logger.warn(sputs("Unable to url decode key or value in param", key, value), e); }// ww w.j a v a2 s . c o m } } } } return paramMap; }
From source file:org.atmosphere.vertx.AtmosphereCoordinator.java
License:Apache License
/** * Route the {@link ServerWebSocket} into the {@link AtmosphereFramework} * * @param webSocket the {@link ServerWebSocket} *//*from ww w. j a v a2 s . c om*/ public AtmosphereCoordinator route(ServerWebSocket webSocket) { Map<String, List<String>> paramMap = new QueryStringDecoder("?" + webSocket.query()).parameters(); Map<String, String[]> params = new LinkedHashMap<String, String[]>(paramMap.size()); for (Map.Entry<String, List<String>> entry : paramMap.entrySet()) { params.put(entry.getKey(), entry.getValue().toArray(new String[] {})); } String contentType = "application/json"; if (params.size() == 0) { // TODO: vert.x trim the query string, unfortunately. params.put(X_ATMO_PROTOCOL, new String[] { "true" }); params.put(X_ATMOSPHERE_FRAMEWORK, new String[] { "2.1" }); params.put(X_ATMOSPHERE_TRACKING_ID, new String[] { "0" }); params.put(X_ATMOSPHERE_TRANSPORT, new String[] { "websocket" }); params.put("Content-Type", new String[] { contentType }); } else if (params.containsKey("Content-Type") && params.get("Content-Type").length > 0) { contentType = params.get("Content-Type")[0]; } AtmosphereRequest.Builder requestBuilder = new AtmosphereRequest.Builder(); AtmosphereRequest r = requestBuilder.requestURI(webSocket.path()) .requestURL("http://0.0.0.0" + webSocket.path()).contentType(contentType).pathInfo(webSocket.path()) .queryStrings(params).build(); final WebSocket w = new VertxWebSocket(framework.getAtmosphereConfig(), webSocket); try { webSocketProcessor.open(w, r, AtmosphereResponse.newInstance(framework.getAtmosphereConfig(), r, w)); } catch (IOException e) { logger.debug("", e); } webSocket.handler(new Handler<Buffer>() { @Override public void handle(Buffer data) { webSocketProcessor.invokeWebSocketProtocol(w, data.toString()); } }); webSocket.exceptionHandler(new Handler<Throwable>() { @Override public void handle(Throwable event) { w.close(); logger.debug("", event); webSocketProcessor.close(w, 1006); } }); webSocket.closeHandler(new VoidHandler() { @Override protected void handle() { w.close(); webSocketProcessor.close(w, 1005); } }); return this; }