Хранить переменные в netty TCP-соединении

Мне нужно сохранить объект для последующего использования в TCP-соединении на NETTY. После входа пользователя некоторые переменные должны быть сохранены в этом пользовательском соединении.

Как правильно это сделать? Я попытался сохранить некоторые переменные в ChannelHandler Context(), но это устарело:

public void channelRegistered(ChannelHandlerContext ctx)
{
    ctx.attr(attrObj).set(new Session(ctx));
}

Затем я попытался сохранить на канале:

public void channelRegistered(ChannelHandlerContext ctx)
{
    ctx.channel().attr(attrObj).set(new Session(ctx));
}

Объект был передан всем сеансам TCP, поэтому безуспешно.

Как я могу установить свой объект Session() для этого конкретного TCP-соединения пользователя, чтобы все следующие сообщения от этого пользователя могли легко получать эти данные?

Спасибо

🤔 А знаете ли вы, что...
Java обладает богатой стандартной библиотекой, включая коллекции, ввод/вывод, сетевые операции и многое другое.


310
1

Ответ:

Решено

Просто используйте ctx.channel().attr(attrObj).set(...), как вы это делали. Каждый канал имеет разные атрибуты, и поэтому для каждого соединения. Если на одно TCP-соединение приходится несколько сеансов, вам нужно будет поместить его в карту, которая хранится как атрибут в файле Channel.