Frage

Gibt es eine Möglichkeit, den Zustand auf einem Kanal zu halten? Ich schreibe einen Chat -Server und möchte Informationen über den Benutzer behalten, zu dem ein Kanal gehört. Ich dachte, Channel würde eine Methode zum Speichern eines Benutzerobjekts bieten, aber ich kann keine sehen. Gibt es eine Möglichkeit, dies zu tun, ohne so etwas wie eine Karte zu brauchen?

War es hilfreich?

Lösung

1) Sie können die Statusinformationen wie unten im ChannelHandlerContext festlegen und später verwenden.

   channelHandlerContext.setAttachment(yourObj);

   Object yourObj2 = channelHandlerContext.getAttachment();

2) Erstellen Sie dort einen lokalen und staatlichen State -Sender (Channel Local ist wie ein lokaler Thread zu einem bestimmten Kanal).

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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top