有没有办法让状态保持在频道上。我正在写一个聊天服务器,我想保留有关Channel所属用户的信息。我想也许Channel会提供一种存储用户对象的方法,但我看不到一个。有没有办法在不需要地图的情况下做到这一点?
答案 0 :(得分:6)
1)您可以在channelHandlerContext中设置状态信息,如下所示,稍后再使用。
channelHandlerContext.setAttachment(yourObj);
Object yourObj2 = channelHandlerContext.getAttachment();
2)在那里创建一个本地频道并存储状态信息(频道本地就像一个特定频道的本地线程)
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);