2017-02-08 1 views
0

Ich möchte Informationen über meine angemeldeten Benutzer in meiner Webanwendung verfügbar halten; So übergebe ich beispielsweise einen Identifier an SessionListener.sessionAdded in der ServerMessage und benutze den Bezeichner, um Benutzerinformationen in einen persistenten Hash zu laden.benötigen Informationen in einem BayeuxServer.Session Listener

Ebenso, wenn eine Sitzung zerstört wird, möchte ich die Client-Informationen aus dem Hash löschen, wenn SessionListener.sessionRemoved aufgerufen wird. Es gibt jedoch keine Nachricht. Kann ich ServerSession.getUserAgent() verwenden und was ist der String, den er zurückgibt?

Oder gibt es einen SessionListener pro Sitzung, sodass ich die E-Mail lokal im SessionListener speichern kann, wenn sessionRemoved aufgerufen wird?

Antwort

0

Sie haben 2 Möglichkeiten.

Mit einer Session Attribut:

class MySessionListener implements BayeuxServer.SessionListener { 
    public void sessionAdded(ServerSession session, ServerMessage message) { 
     session.setAttribute("token", message.getDataAsMap().get("token")); 
    } 
    public void sessionRemoved(ServerSession session, boolean timedout) { 
     String token = (String)session.getAttribute("token"); 
     // Use the token here. 
    } 
} 

oder mit einem RemoveListener:

class MySessionListener implements BayeuxServer.SessionListener { 
    public void sessionAdded(ServerSession session, ServerMessage message) { 
     final String token = (String)message.getDataAsMap().get("token"); 
     session.addListener(new RemoveListener() { 
      public void removed(ServerSession session, boolean timeout) { 
       // Use token here. 
      } 
     }); 
    } 
    public void sessionRemoved(ServerSession session, boolean timedout) { 
     // Nothing to do here. 
    } 
} 
Verwandte Themen