Разница в том, что disconnect
и close
являются исходящими, поэтому они также определены в ChannelOutboundHandler
, в то время как channelInactive
является входящим и, таким образом, определено в ChannelInboundHandler
.
Исходящие события - это события, которые явно инициируются с помощью методов Channel.*
, ChannelHandlerContext.*
, например, «Я хочу закрыть канал». Затем пользователь может перехватить их и сделать что-то, например, задержку закрытия и т. Д.
Входящие события инициируются самим транспортом (и, таким образом, EventLoop
) и обычно сообщают вам, что что-то произошло (что может быть потому, что вы запросили это или удаленный узел сделал это).
Разница между disconnect
и close
зависит от самого транспорта, например, при использовании TCP
нет никакой разницы, тогда как при использовании UDP
есть один.