Exemple #1
0
  /**
   * 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;
  }