Влияет ли ChannelInboundHandlerAdapter и ChannelOutboundHandlerAdapter последовательность запуска кодера и декодера в netty4? - PullRequest
0 голосов
/ 19 октября 2018

Я использую netty4 для реализации кодера и декодера.

Когда я расширяю декодер типа ChannelInboundHandlerAdapter и кодировщик типа ChannelOutboundHandlerAdapter, то какой должна быть его последовательность выполнения?

  1. Первый кодер, а затем декодер.
  2. Первый декодер, а затем кодер.

Кроме того, как ChannelOutboundHandlerAdapter и ChannelInboundHandlerAdapter производят чтение (I / O) и запись (I / O) и гдечто использовать надо?

1 Ответ

0 голосов
/ 19 октября 2018

Обратите внимание на следующее:

ChannelInboundHandler - обрабатывает входящие данные и изменения состояния всех видов ChannelOutboundHandler - обрабатывает исходящие данные и позволяет перехватывать все операции

Например, когда приходит сообщение, то есть когда вы читаете данные из сокета, ChannelInboundHandler будет уведомлен.Кроме того, он будет уведомлен об изменениях состояния, таких как события writabilityChanged, channelActive и Inactive.

Когда вы записываете данные в канал, ChannelOutboundHandler получает уведомление.Он также будет уведомлен о вызовах, таких как подключение, отключение и чтение, выполненные на канале.

Для реализации кодеров и декодеров вы можете расширить предопределенные декодеры и кодеры в нетто, как ByteToMessageDecoder, MessageToMessageDecoder, MessageToByteEncoderи MessageToMessageEncoder, поскольку это упростит ваши задачи.

Что касается порядка выполнения декодеров и кодировщиков, подумайте об этом так: когда сообщение достигает вашего приложения через сокет, оно будет в байтовых потоках, тогдавам придется декодировать его для обработки.Когда вы отправляете сообщение сторонним лицам, вам придется закодировать его в байты, прежде чем записывать его в сокет.Порядок выполнения кодеров и декодеров зависит от этого процесса.

...