2011-12-04 4 views
2

채널에 상태를 유지할 수있는 방법이 있습니까? 채팅 서버를 쓰고 있는데 채널이 속한 사용자에 대한 정보를 유지하려고합니다. 아마도 Channel이 사용자 객체를 저장하는 메소드를 제공 할 것이라고 생각했지만 실제로는 볼 수 없었습니다. 지도 같은 것을 필요로하지 않고 이것을 할 수있는 방법이 있습니까?Netty 채널에 상태 유지

답변

6

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

의 Netty 4.0) 특정 채널에 대해 로컬() 메소드 . 그래서 나는이 정보가 단지 구형이라고 추측하고 있습니까? – Michael

+1

@Michael'setAttachment()'는 더 이상 사용되지 않습니다.'attr()'은 지금 찾고있는 메소드입니다. http://netty.io/4.0/api/io/netty/util/AttributeMap.html을 참조하십시오. –