Может netty надежно обнаружить канал близко/отключить?
В частности, меня интересует случай, когда другой конец канала неожиданно умирает (например, процесс убивается). кажется, что netty не надежно запускает событие закрытого/разъединенного канала, иногда это происходит, а иногда и нет. он также не обязательно вызывает SocketException для соединения reset.
за что он стоит, я также пробовал писать на канал, но это также продолжает работать, не бросая исключений или не запуская никаких других событий.
Я тестирую это на окнах с netty 3.3.0.Final, если это имеет значение.
Ответы
Ответ 1
В некотором случае, как вы сказали, netty не может обнаружить, закрыт ли канал или нет. Здесь та же проблема, упомянутая в этом вопросе.
Одним из способов решения проблемы является использование сообщений о сердцебиении. Netty поддерживает heartbeat с IdleStateHandler.
Также вы можете просмотреть эти ссылки для IdleStateHandler:
Ответ 2
Если канал отключается без отправки, нет способа обнаружить это. Обычно лучший способ обнаружить отключение, если это необходимо, - периодически отправлять события пульса по каналу каждые x секунд. Используя IdleStateHandler, если вы не получаете сердцебиение после сердцебиения + дельта, вы принудительно отключаете канал.