在 netty TCP 连接上存储变量

Store variables on netty TCP Connection

我需要存储一个对象供以后在 NETTY 上的 TCP 连接上使用。用户登录后,一些变量需要存储在这个用户连接上。

正确的做法是什么?我尝试在 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 会话共享,因此没有成功。

如何在此特定 TCP 用户连接上设置我的 Session() 对象,以便来自该用户的所有下一条消息都可以轻松检索此数据?

谢谢

只需像您一样使用 ctx.channel().attr(attrObj).set(...)。每个通道都有不同的属性,因此每个连接都是如此。如果每个 TCP 连接有多个会话,您需要将它放在一个映射中,该映射作为属性存储在 Channel.