Есть ли в Netty 4 способ передать имя/идентификатор канала при подключении, который я могу использовать для регистрации на стороне сервера?

ОБЩАЯ ИНФОРМАЦИЯ:

Я хочу поддерживать реестр подключенных каналов на стороне сервера, но мне также нужно, чтобы этот реестр был снабжен KEY известным именем/идентификатором — уникальным для каждого подключенного канала.

Поэтому я буду использовать строковый идентификатор в качестве ключа для каждого подключенного канала (т. е. и клиент, и сервер знают его, но это не будет GUID).

Когда клиент подключается и вызывается метод channelActive обработчика на стороне сервера, я хочу извлечь этот ID канала из ChannelHandlerContext и сохранить эту пару (ID, Channel).

Когда канал будет отключен - либо по вине клиента, либо по какой-то причине, я удалю пару (ID, Channel) с карты.

ВОПРОС:

Есть ли способ передать эти данные приложения при вызове Connect на стороне клиента, чтобы обработчик на стороне сервера мог прочитать это в своем методе channelActive?

Могу ли я сделать это только «при подключении»? Я хочу избежать добавления этой логики в фактическую обработку сообщений, так как она предназначена исключительно для идентификации подключения/отключения канала.

Спасибо


person Bob DeRemer    schedule 22.03.2013    source источник


Ответы (1)


После некоторого внепланового обсуждения я лучше понял, что соединение используется исключительно для установления физического соединения между конечными точками. Различные обработчики в конвейере создаются/используются только после первой записи в канал.

В результате я собираюсь встроить это в наш уровень обработки сообщений, используя метод channelActive клиентского канала для обработки однократного вызова регистрации.

person Bob DeRemer    schedule 22.03.2013