Разница между channelInactive и закрыть и отключить в ChannelHandler? - PullRequest
0 голосов
/ 08 мая 2018

В чем разница между channelInactive и событием закрытия и отключения в обработчике каналов?

Если я закрою канал вручную, все три метода в channelhandler будут вызваны?

Если канал закрыт из-за сетевых ошибок, будут вызваны все три метода в обработчике каналов?

Интересно, если я просто добавлю метод channelInactive, все ли события закрытия и отключения также будут покрыты? Я имею в виду, что метод channelInactive превосходит другие?

1 Ответ

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

Разница в том, что disconnect и close являются исходящими, поэтому они также определены в ChannelOutboundHandler, в то время как channelInactive является входящим и, таким образом, определено в ChannelInboundHandler.

Исходящие события - это события, которые явно инициируются с помощью методов Channel.*, ChannelHandlerContext.*, например, «Я хочу закрыть канал». Затем пользователь может перехватить их и сделать что-то, например, задержку закрытия и т. Д.

Входящие события инициируются самим транспортом (и, таким образом, EventLoop) и обычно сообщают вам, что что-то произошло (что может быть потому, что вы запросили это или удаленный узел сделал это).

Разница между disconnect и close зависит от самого транспорта, например, при использовании TCP нет никакой разницы, тогда как при использовании UDP есть один.

...