質問

チャネルに状態を維持する方法はありますか。チャットサーバーを書いていますが、チャネルが属するユーザーに関する情報を保持したいと考えています。チャンネルはユーザーオブジェクトを保存する方法を提供するかもしれないと思っていましたが、表示できません。マップのようなものを必要とせずにこれを行う方法はありますか?

役に立ちましたか?

解決

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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top