Определите, получил ли я HttpRequest или HttpResponse? - PullRequest
0 голосов
/ 08 мая 2018

У меня нетти-сервер, который прослушивает порт. Он может получать HttpResponses или HttpRequests на этот порт. Как я могу настроить конвейер для обработки обоих и различения между ними? Это возможно? Соединения инициируются с этим сервером, а не с него.

Спасибо!

1 Ответ

0 голосов
/ 09 мая 2018

Вы можете использовать метод isHttp из примера PortUnification . Он проверяет первые два неподписанных байта полученного сообщения, чтобы определить, является ли это, вероятно, глаголом HTTP, поэтому идентифицирует сообщение как запрос HTTP. Возможно, вам придется немного изменить его, в зависимости от вероятного содержания любых ответов.

private static boolean isHttp(int magic1, int magic2) {
  return
     magic1 == 'G' && magic2 == 'E' || // GET
     magic1 == 'P' && magic2 == 'O' || // POST
     magic1 == 'P' && magic2 == 'U' || // PUT
     magic1 == 'H' && magic2 == 'E' || // HEAD
     magic1 == 'O' && magic2 == 'P' || // OPTIONS
     magic1 == 'P' && magic2 == 'A' || // PATCH
     magic1 == 'D' && magic2 == 'E' || // DELETE
     magic1 == 'T' && magic2 == 'R' || // TRACE
     magic1 == 'C' && magic2 == 'O';   // CONNECT
}
...