我想要:未在F5上注销用户。我将用户的会话ID存储在cookie中,并且我想在F5上更新会话。Websockets:恢复页面上的会话
我用:Peer
类在服务器端安排通信。一个浏览器的标签 - 一个同行。要更新会话客户端,只需在登录后存储sessionId
。之后,如果客户端想要在aonther选项卡上更新会话,则只需询问服务器是否存在与CORE.peers
集合中的id = sessionId
同行。如果是 - 会话恢复。
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
- 网页套接字发送EOF信息和onWebSocketClose
方法被调用。因此 - 与用户的sessionId
同行将从CORE.peers
中删除;用户将无法更新他的会话(意味着用户将被注销)。
另一方面,我不能停止删除服务器端的同龄人。
问:我应该如何决定在服务器端时,除去同行?