在Netty频道上保持状态

时间:2011-12-04 17:52:57

标签: netty

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

1 个答案:

答案 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);