2
チャネルに状態を保持する方法はありますか?私はチャットサーバーを作成しており、チャンネルが属するユーザーに関する情報を保持したいと考えています。私はChannelがユーザオブジェクトを格納するメソッドを提供するかもしれないと考えていたが、私はそれを見ることができない。マップのようなものを必要とせずにこれを行う方法はありますか?Nettyチャネルに状態を維持する
チャネルに状態を保持する方法はありますか?私はチャットサーバーを作成しており、チャンネルが属するユーザーに関する情報を保持したいと考えています。私はChannelがユーザオブジェクトを格納するメソッドを提供するかもしれないと考えていたが、私はそれを見ることができない。マップのようなものを必要とせずにこれを行う方法はありますか?Nettyチャネルに状態を維持する
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);
(チャネルローカルチャネル特定のローカルスレッドのようなものである)がチャンネルローカルおよびストア状態情報を作成します。だから私はこの情報がちょうど時代遅れであると推測していますか? – Michael
@Michael 'setAttachment()'はもはや使われていません。あなたが探しているメソッドは 'attr()'です。 http://netty.io/4.0/api/io/netty/util/AttributeMap.htmlを参照してください。 –