我想在我的网络应用中保留有关我登录用户的信息;所以,例如,我将一个标识符传递给ServerMessage中的SessionListener.sessionAdded,并使用该标识符将用户信息加载到持久散列中。
同样,当会话被销毁时,我想在调用SessionListener.sessionRemoved时从散列中擦除客户端信息。但是,没有消息。我可以使用ServerSession.getUserAgent(),它返回的是什么字符串?
或者,每个会话是否有一个SessionListener,以便我可以在SessionListener中本地保存电子邮件,以便在调用sessionRemoved时使用?
答案 0 :(得分:0)
你有2个选择。
使用会话属性:
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.
}
}