在netty TCP连接上存储变量

时间:2019-07-18 17:27:37

标签: java netty

我需要存储一个对象,以便以后在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()对象,以便该用户发出的所有下一条消息都可以轻松地检索此数据?

谢谢

1 个答案:

答案 0 :(得分:0)

只需使用ctx.channel().attr(attrObj).set(...)即可。每个通道具有不同的属性,因此每个连接都是如此。如果每个TCP连接有多个会话,则需要将其放入作为属性存储在Channel上的映射中。