Domanda

C'è un modo per mantenere lo stato su un canale. Sto scrivendo un server di chat e voglio conservare informazioni sull'utente a cui appartiene un canale. Pensavo che forse Channel avrebbe fornito un metodo per archiviare un oggetto utente, ma non riesco a vederne uno. C'è un modo per farlo senza aver bisogno di qualcosa come una mappa?

È stato utile?

Soluzione

1) È possibile impostare le informazioni sullo stato nel canalendlerContext, come sotto, e usarle in seguito.

   channelHandlerContext.setAttachment(yourObj);

   Object yourObj2 = channelHandlerContext.getAttachment();

2) Crea un canale locale e archivia le informazioni sullo stato lì (il canale locale è come un thread locale a un canale specifico)

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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top