/** * Returns the content length of the specified web socket message. If the specified message is not * a web socket message, {@code -1} is returned. */ private static int getWebSocketContentLength(HttpHeader message) { // WebSockset messages have constant content-lengths. if (message instanceof HttpRequestHeader) { HttpRequestHeader req = (HttpRequestHeader) message; if (HttpMethod.GET.equals(req.getMethod()) && req.containsHeader(Names.SEC_WEBSOCKET_KEY1) && req.containsHeader(Names.SEC_WEBSOCKET_KEY2)) { return 8; } } else if (message instanceof HttpResponseHeader) { HttpResponseHeader res = (HttpResponseHeader) message; if (res.getStatus().getCode() == 101 && res.containsHeader(Names.SEC_WEBSOCKET_ORIGIN) && res.containsHeader(Names.SEC_WEBSOCKET_LOCATION)) { return 16; } } // Not a web socket message return -1; }