Как узнать, приходит ли channelDisconnected от клиента или сервера в клиенте Netty - PullRequest
0 голосов
/ 24 ноября 2011

У нас есть пара клиентов Netty с обработчиками, которые являются разделяемыми и не содержат изменяемого состояния. Обработчик добавляется к StaticChannelPipline. Я хотел бы знать, есть ли способ узнать, происходит ли channelDisconnected из-за того, что сервер закрывает соединение, или нет возможности сообщить об этом случае, вызывая обратный вызов, указанный клиентом.

1 Ответ

2 голосов
/ 01 декабря 2011

Вы можете переопределить SimpleChannelDownstreamHandler.closeRequested(), чтобы получать уведомления, когда ваше приложение вызывает Channel.close().

Однако, даже если вы позвонили Channel.close(), всегда есть условие гонки, когда удаленный узел пытался закрытьсоединение одновременно.Поэтому не стоит определять поведение вашего приложения в зависимости от того, «какая сторона» закрыла соединение.

В качестве альтернативы, вы можете определить сообщение good-bye в вашем протоколе и потребовать от клиента прощаниясообщение перед отключением.Тогда вы будете лучше знать, разорвал ли клиент свое соединение так, как планировалось, или нет.

...