Если у вас все еще есть два разных порта, вы можете через Java-наследие создать свой собственный «бизнес-обработчик», а затем сначала добавить обработчик протокола (эхо-код и http-один), а во-вторых - собственный обработчик вашего бизнеса.
Конечно, все зависит от возможного объекта, передаваемого этому бизнес-обработчику, так как он должен быть таким же, независимо от того, что делают эхо или обработчики http в первый раз.
Кстати, это хорошая практика, чтобы отделить «протокол» от «бизнес» обработчиками ...
ответ Update:
В вашем трубопроводе, для обоих серверов (2 порта) , сначала добавьте драйвер «protocol» с расширением ChannelDuplexHandler
вместо SimpleChannelInboundHandler
, а затем добавьте свой собственный обработчик (на основе SimpleChannelInboundHandler
).
Из бизнеса протокола перейдите к входящему бизнес-обработчику объекта по желанию и верните объект, чтобы преобразовать обратно в протокол ChannelDuplexHandler
.
Таким образом, вы выделяете протокол (кодек) и бизнес.
Даже если это не совсем то, что вы хотите, вы можете посмотреть пример/src/main/java/io/netty/example/spdy/client, который показывает, как это сделать (на стороне клиента, но на стороне сервера это точно такой же принцип).
Второе обновление:
иметь только один порт, он является более сложным, так как вы должны будете тогда зайцем ранее ChannelDuplexHandler
, который будет анализировать первые байты indentify правильного типа протокола. Затем вы можете динамически подключить к конвейеру необходимые обработчики (протокол и бизнес).
Таким образом, сначала в вашем конвейере будет только один обработчик, который решает, какой протокол должен использоваться.
Обратите внимание, что это может быть сложно. За исключением случаев, когда у вас есть явное различие в первых байтах, которые обеспечивают протокол, у вас может не быть реального решения, за исключением наличия двух портов, поскольку программа должна быть детерминированной.
Для эха все объекты POJO, содержащие строки, которые используются EchoHandler для запуска запросов на сервере. Сервер отправляет обратно строки. –
HTTP-часть получила HTTPRequest и возвращает сборку HTML-страницы из журнала (текстовые файлы) –
Можете ли вы опубликовать некоторый псевдокод. Это даст мне лучшее понимание –