Ваша проблема вызвана отсутствием обработчиков в вашем конвейере.
В данный момент у вас есть только 2 обработчика в вашем конвейере:
HttpMessageHandler
, который обрабатывает FullHttpRequest
объекты
CalculatorOperationHandler
, который обрабатывает Operation
объекты
Когда поступают данные из браузера, они поступают как ByteBuf
объект, но вы не обрабатываете этот объект!
Чтобы преобразовать ByteBuf
в FullHttpRequest
, вам нужно добавить в свой конвейер другие обработчики, которые могут это сделать.
Первый обработчик, который вам нужен - HttpServerCodec
, этот класс преобразует ByteBuf
объекты в объекты, которые являются частями HTTP-обмена, такие как заголовки, конечные заголовки и тела запроса.
Затем вам нужно добавить HttpObjectAggregator
, который объединяет вышеупомянутые объекты в FullHttpRequest
, так что вам нужно иметь дело только с 1 объектом.
ch.pipeline().addLast(
new HttpServerCodec(),
new HttpObjectAggregator(65536), // Handle POST/PUT requests up 64KB
new HttpMessageHandler(),
new CalculatorOperationHandler()
);
Вы также можете добавить new LoggingHandler(LogLevel.INFO)
, если хотите видеть трафик между любыми слоями.