我需要存储一个对象,以便以后在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()对象,以便该用户发出的所有下一条消息都可以轻松地检索此数据?
谢谢
答案 0 :(得分:0)
只需使用ctx.channel().attr(attrObj).set(...)
即可。每个通道具有不同的属性,因此每个连接都是如此。如果每个TCP连接有多个会话,则需要将其放入作为属性存储在Channel
上的映射中。