首页 > 解决方案 > 在 netty TCP 连接上存储变量

问题描述

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

谢谢

标签: javanetty

解决方案


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


推荐阅读