this.response = new ClientUpgradeResponse(); Matcher mat = PAT_STATUS_LINE.matcher(line); if (!mat.matches()) response.setStatusCode(Integer.parseInt(mat.group(1))); response.setStatusReason(mat.group(2)); state = State.HEADER; break; String headerValue = header.group(2); response.addHeader(headerName,headerValue);
private void validateResponse(ClientUpgradeResponse response) if (response.getStatusCode() != SWITCHING_PROTOCOLS) throw new UpgradeException(request.getRequestURI(),response.getStatusCode(),"Didn't switch protocols"); String connection = response.getHeader("Connection"); if (!"upgrade".equalsIgnoreCase(connection)) throw new UpgradeException(request.getRequestURI(),response.getStatusCode(),"Connection is " + connection + " (expected upgrade)"); String respHash = response.getHeader("Sec-WebSocket-Accept"); response.setSuccess(true); if (expectedHash.equalsIgnoreCase(respHash) == false) response.setSuccess(false); throw new UpgradeException(request.getRequestURI(),response.getStatusCode(),"Invalid Sec-WebSocket-Accept hash"); List<String> extValues = response.getHeaders("Sec-WebSocket-Extensions"); if (extValues != null) response.setExtensions(extensions);
public ClientUpgradeResponse(HttpResponse response) { super(); setStatusCode(response.getStatus()); setStatusReason(response.getReason()); HttpFields fields = response.getHeaders(); for (HttpField field : fields) { addHeader(field.getName(),field.getValue()); } HttpField extensionsField = fields.getField(HttpHeader.SEC_WEBSOCKET_EXTENSIONS); if (extensionsField != null) this.extensions = ExtensionConfig.parseList(extensionsField.getValues()); setAcceptedSubProtocol(fields.get(HttpHeader.SEC_WEBSOCKET_SUBPROTOCOL)); }
session.setUpgradeResponse(new ClientUpgradeResponse(response)); connection.addListener(session); upgradeListener.onHandshakeResponse(new ClientUpgradeResponse(response));
@Override public void onOpen() { boolean beenOpened = opened.getAndSet(true); if (!beenOpened) { WebSocketSession session = getSession(); ConnectionManager connectionManager = connectPromise.getClient().getConnectionManager(); connectionManager.addSession(session); connectPromise.succeeded(session); ByteBuffer extraBuf = connectPromise.getResponse().getRemainingBuffer(); if (extraBuf.hasRemaining()) { LOG.debug("Parsing extra remaining buffer from UpgradeConnection"); getParser().parse(extraBuf); } } super.onOpen(); }
private void upgradeConnection(ClientUpgradeResponse response) { EndPoint endp = getEndPoint(); Executor executor = getExecutor(); WebSocketClientConnection connection = new WebSocketClientConnection(endp,executor,connectPromise); // Initialize / Negotiate Extensions EventDriver websocket = connectPromise.getDriver(); WebSocketPolicy policy = connectPromise.getClient().getPolicy(); WebSocketSession session = new WebSocketSession(request.getRequestURI(),websocket,connection); session.setPolicy(policy); session.setUpgradeResponse(response); connection.setSession(session); // Initialize / Negotiate Extensions ExtensionStack extensionStack = new ExtensionStack(connectPromise.getClient().getExtensionFactory()); extensionStack.negotiate(response.getExtensions()); extensionStack.configure(connection.getParser()); extensionStack.configure(connection.getGenerator()); // Setup Incoming Routing connection.setNextIncomingFrames(extensionStack); extensionStack.setNextIncoming(session); // Setup Outgoing Routing session.setOutgoingHandler(extensionStack); extensionStack.setNextOutgoing(connection); // Now swap out the connection endp.setConnection(connection); connection.onOpen(); }
@Override public void onOpen() { boolean beenOpened = opened.getAndSet(true); if (!beenOpened) { WebSocketSession session = getSession(); ConnectionManager connectionManager = connectPromise.getClient().getConnectionManager(); connectionManager.addSession(session); connectPromise.succeeded(session); ByteBuffer extraBuf = connectPromise.getResponse().getRemainingBuffer(); if (extraBuf.hasRemaining()) { LOG.debug("Parsing extra remaining buffer from UpgradeConnection"); getParser().parse(extraBuf); } } super.onOpen(); }
private void upgradeConnection(ClientUpgradeResponse response) { EndPoint endp = getEndPoint(); Executor executor = getExecutor(); WebSocketClientConnection connection = new WebSocketClientConnection(endp,executor,connectPromise); // Initialize / Negotiate Extensions EventDriver websocket = connectPromise.getDriver(); WebSocketPolicy policy = connectPromise.getClient().getPolicy(); WebSocketSession session = new WebSocketSession(request.getRequestURI(),websocket,connection); session.setPolicy(policy); session.setUpgradeResponse(response); connection.setSession(session); // Initialize / Negotiate Extensions ExtensionStack extensionStack = new ExtensionStack(connectPromise.getClient().getExtensionFactory()); extensionStack.negotiate(response.getExtensions()); extensionStack.configure(connection.getParser()); extensionStack.configure(connection.getGenerator()); // Setup Incoming Routing connection.setNextIncomingFrames(extensionStack); extensionStack.setNextIncoming(session); // Setup Outgoing Routing session.setOutgoingHandler(extensionStack); extensionStack.setNextOutgoing(connection); // Now swap out the connection endp.setConnection(connection); connection.onOpen(); }
this.response = new ClientUpgradeResponse(); Matcher mat = PAT_STATUS_LINE.matcher(line); if (!mat.matches()) response.setStatusCode(Integer.parseInt(mat.group(1))); response.setStatusReason(mat.group(2)); state = State.HEADER; break; String headerValue = header.group(2); response.addHeader(headerName,headerValue);
private void validateResponse(ClientUpgradeResponse response) if (response.getStatusCode() != SWITCHING_PROTOCOLS) throw new UpgradeException(request.getRequestURI(),response.getStatusCode(),"Didn't switch protocols"); String connection = response.getHeader("Connection"); if (!"upgrade".equalsIgnoreCase(connection)) throw new UpgradeException(request.getRequestURI(),response.getStatusCode(),"Connection is " + connection + " (expected upgrade)"); String respHash = response.getHeader("Sec-WebSocket-Accept"); response.setSuccess(true); if (expectedHash.equalsIgnoreCase(respHash) == false) response.setSuccess(false); throw new UpgradeException(request.getRequestURI(),response.getStatusCode(),"Invalid Sec-WebSocket-Accept hash"); List<String> extValues = response.getHeaders("Sec-WebSocket-Extensions"); if (extValues != null) response.setExtensions(extensions);