2
채널에 상태를 유지할 수있는 방법이 있습니까? 채팅 서버를 쓰고 있는데 채널이 속한 사용자에 대한 정보를 유지하려고합니다. 아마도 Channel이 사용자 객체를 저장하는 메소드를 제공 할 것이라고 생각했지만 실제로는 볼 수 없었습니다. 지도 같은 것을 필요로하지 않고 이것을 할 수있는 방법이 있습니까?Netty 채널에 상태 유지
채널에 상태를 유지할 수있는 방법이 있습니까? 채팅 서버를 쓰고 있는데 채널이 속한 사용자에 대한 정보를 유지하려고합니다. 아마도 Channel이 사용자 객체를 저장하는 메소드를 제공 할 것이라고 생각했지만 실제로는 볼 수 없었습니다. 지도 같은 것을 필요로하지 않고 이것을 할 수있는 방법이 있습니까?Netty 채널에 상태 유지
1) 아래와 같이 channelHandlerContext에서 상태 정보를 설정하고 나중에 사용할 수 있습니다.
channelHandlerContext.setAttachment(yourObj);
Object yourObj2 = channelHandlerContext.getAttachment();
2)이 채널 지역 저장 상태 정보를 생성이 (채널이 로컬 실처럼 ChannelHandlerContext가 setAttachment없는
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);
의 Netty 4.0) 특정 채널에 대해 로컬() 메소드 . 그래서 나는이 정보가 단지 구형이라고 추측하고 있습니까? – Michael
@Michael'setAttachment()'는 더 이상 사용되지 않습니다.'attr()'은 지금 찾고있는 메소드입니다. http://netty.io/4.0/api/io/netty/util/AttributeMap.html을 참조하십시오. –