Обратите внимание на следующее:
ChannelInboundHandler
- обрабатывает входящие данные и изменения состояния всех видов ChannelOutboundHandler
- обрабатывает исходящие данные и позволяет перехватывать все операции
Например, когда приходит сообщение, то есть когда вы читаете данные из сокета, ChannelInboundHandler будет уведомлен.Кроме того, он будет уведомлен об изменениях состояния, таких как события writabilityChanged, channelActive и Inactive.
Когда вы записываете данные в канал, ChannelOutboundHandler получает уведомление.Он также будет уведомлен о вызовах, таких как подключение, отключение и чтение, выполненные на канале.
Для реализации кодеров и декодеров вы можете расширить предопределенные декодеры и кодеры в нетто, как ByteToMessageDecoder
, MessageToMessageDecoder
, MessageToByteEncoder
и MessageToMessageEncoder
, поскольку это упростит ваши задачи.
Что касается порядка выполнения декодеров и кодировщиков, подумайте об этом так: когда сообщение достигает вашего приложения через сокет, оно будет в байтовых потоках, тогдавам придется декодировать его для обработки.Когда вы отправляете сообщение сторонним лицам, вам придется закодировать его в байты, прежде чем записывать его в сокет.Порядок выполнения кодеров и декодеров зависит от этого процесса.