java - 在 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() 对象,以便来自该用户的所有下一条消息都可以轻松检索此数据?
谢谢
解决方案
就像ctx.channel().attr(attrObj).set(...)
你一样使用。每个通道都有不同的属性,因此每个连接都是如此。如果每个 TCP 连接有多个会话,则需要将其放在一个映射中,该映射存储为Channel
.
推荐阅读
- python-3.x - 在 VS Code 中运行 pytest-cov 和 pytest
- google-chrome-extension - Chrome 扩展检测 Google 文档(包括评论)何时加载
- android - 在库和宿主应用程序中初始化 WorkManager 自定义配置 - Android 库项目
- k-fold - ValueError:发现样本数量不一致的输入变量:[140, 70]
- amazon-ec2 - 如何过滤 AWS Application Load Balancer 未知请求(可能来自机器人/爬虫)?
- flutter - Flutter 插件,CMakeList,链接问题
- python - Postgres:同时使用准备好的语句和字符转义是否足以避免恶意用户输入攻击?
- ssh - 如何在 .ssh/config 中模拟 ssh 命令
- python - 如何检查脚本是否已经导入?
- java - 两个蓝牙连接服务操作处理程序