我想: 不在F5上注销用户。我将用户的会话ID存储在cookie中,我想在F5上更新会话。
我在服务器端使用: Peer
类来安排通信。一个浏览器的标签 - 一个同伴。要更新会话客户端,只需在他登录后存储sessionId
。之后如果客户想要在aonther选项卡上续订会话,他只需询问服务器id = sessionId
中是否有CORE.peers
的同行采集。如果是 - 会话恢复。
public class Peer implements WebSocketListener {
private org.eclipse.jetty.websocket.api.Session session;
private int id;
public void onWebSocketText(String s) {
//handle request and send response via sesion
}
public void onWebSocketClose(int i, String s) {
CORE.peers.add(this);
}
public void onWebSocketConnect(org.eclipse.jetty.websocket.api.Session session) {
CORE.peers.remove(this);
}
public void onWebSocketError(Throwable throwable) {
//...
}
}
的问题: 的
每次用户按F5
- websocket发送EOF消息并调用onWebSocketClose
方法。因此,用户sessionId
的同行将从CORE.peers
中移除;并且用户将无法续订其会话(意味着用户将被注销)。
另一方面,我根本不能停止删除服务器端的对等端。
问题: 如何在服务器端决定删除同行?
答案 0 :(得分:1)
问题:如何在服务器端决定删除同行?
在浏览器应用程序中,客户端可能会在没有明确注销的情况下消失。
通常会对此进行处理,以便除了显式注销外,如果客户端在最后x分钟内没有调用服务器(x通常为10或15分钟),也会被视为已注销。
如果您希望客户端保持登录的时间超过该时间,则只要浏览器停留在当前网站上,客户端就可以每隔(x-1)分钟进行一次“保持活动”呼叫。