Pregunta

¿Hay alguna manera de mantener el estado en un canal? Estoy escribiendo un servidor de chat y quiero mantener información sobre el usuario al que pertenece un canal. Estaba pensando que tal vez el canal proporcionaría un método para almacenar un objeto de usuario, pero no puedo ver uno. ¿Hay alguna manera de hacer esto sin necesidad de algo como un mapa?

¿Fue útil?

Solución

1) Puede establecer la información de estado en ChannelHandLerContext, como a continuación, y usarla más tarde.

   channelHandlerContext.setAttachment(yourObj);

   Object yourObj2 = channelHandlerContext.getAttachment();

2) Cree un canal local y almacene información de estado allí (el canal local es como un hilo local a un canal específico)

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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top