2011-12-04 33 views
2

チャネルに状態を保持する方法はありますか?私はチャットサーバーを作成しており、チャンネルが属するユーザーに関する情報を保持したいと考えています。私はChannelがユーザオブジェクトを格納するメソッドを提供するかもしれないと考えていたが、私はそれを見ることができない。マップのようなものを必要とせずにこれを行う方法はありますか?Nettyチャネルに状態を維持する

答えて

6

1)channelHandlerContextの状態情報を以下のように設定し、後で使用することができます。

channelHandlerContext.setAttachment(yourObj); 

    Object yourObj2 = channelHandlerContext.getAttachment(); 

2)setAttachment()メソッドを持っていない網状4.0 ChannelHandlerContextで

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); 
+0

(チャネルローカルチャネル特定のローカルスレッドのようなものである)がチャンネルローカルおよびストア状態情報を作成します。だから私はこの情報がちょうど時代遅れであると推測していますか? – Michael

+1

@Michael 'setAttachment()'はもはや使われていません。あなたが探しているメソッドは 'attr()'です。 http://netty.io/4.0/api/io/netty/util/AttributeMap.htmlを参照してください。 –

関連する問題