我想要:未在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
中刪除;用戶將無法更新他的會話(意味着用戶將被註銷)。
另一方面,我不能停止刪除服務器端的同齡人。
問:我應該如何決定在服務器端時,除去同行?