Netty 保持状态在网络通道上

Netty 保持状态在网络通道上,netty,Netty,有没有办法保持频道的状态。我正在编写一个聊天服务器,我想保留有关频道所属用户的信息。我在想也许Channel会提供一种存储用户对象的方法,但我看不到。有没有一种不需要地图之类的东西就可以做到这一点的方法?1)您可以在channelHandlerContext中设置状态信息,如下所示,稍后再使用它 channelHandlerContext.setAttachment(yourObj); Object yourObj2 = channelHandlerContext.getAttac

有没有办法保持频道的状态。我正在编写一个聊天服务器,我想保留有关频道所属用户的信息。我在想也许Channel会提供一种存储用户对象的方法,但我看不到。有没有一种不需要地图之类的东西就可以做到这一点的方法?

1)您可以在channelHandlerContext中设置状态信息,如下所示,稍后再使用它

   channelHandlerContext.setAttachment(yourObj);

   Object yourObj2 = channelHandlerContext.getAttachment();
2) 创建本地通道并将状态信息存储在那里(本地通道就像特定通道的本地线程)

import org.jboss.netty.channel.ChannelLocal;
导入java.util.Map;
公共类用户信息持有者{
public final static ChannelLocal USER_INFO=new ChannelLocal();
}
//如果您有通道引用,您可以像这样存储和检索信息
映射用户映射=。。。。
//贮藏
UserInfoHolder.USER_INFO.set(频道、用户地图);
//检索
Map userMap2=UserInfoHolder.USER\u INFO.get(通道);

在Netty 4.0中,ChannelHandlerContext没有setAttachment()方法。所以我猜这些信息已经过时了?@Michael
setAttachment()
不再使用,
attr()
是您现在正在寻找的方法。看见
import org.jboss.netty.channel.ChannelLocal;

import java.util.Map;

public class UserInfoHolder {
     public final static ChannelLocal<Map<String, String>> USER_INFO = new     ChannelLocal<Map<String, String>>();
}


 //if you have the channel reference, you can store and retrieve information like this
 Map<String,String> userMap = ....

 //store
 UserInfoHolder.USER_INFO.set(channel, userMap);

 //retrive
 Map<String,String> userMap2 = UserInfoHolder.USER_INFO.get(channel);