2017-02-08 7 views
0

내 webapp에 로그인 한 사용자에 대한 정보를 제공하고 싶습니다. 예를 들어, ServerMessage의 SessionListener.sessionAdded에 식별자를 전달하고 식별자를 사용하여 사용자 정보를 영구 해시로로드합니다.은 BayeuxServer.Session Listener에 정보가 필요합니다.

마찬가지로 세션이 파괴되면 SessionListener.sessionRemoved가 호출 될 때 해시에서 클라이언트 정보를 지우고 싶습니다. 그러나 메시지가 없습니다. ServerSession.getUserAgent()를 사용할 수 있습니까? 반환하는 String은 무엇입니까?

또는 세션 당 하나의 SessionListener가 있으므로 sessionRemoved가 호출 될 때 사용할 SessionListener에 이메일을 로컬로 저장할 수 있습니까?

답변

0

두 가지 선택 사항이 있습니다.

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. 
    } 
} 

아니면 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. 
    } 
} 
세션 속성으로