Я хочу: Не выходить из системы на F5. Я храню идентификатор сеанса пользователя в файлах cookie, и я хочу возобновить сеанс на F5.Websockets: восстановление сеанса на перезагрузке страницы
Я использую: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
; и пользователь не сможет возобновить сеанс (означает, что пользователь будет отключен).
С другой стороны, я не могу прекратить удаление сверстников на стороне сервера вообще.
Вопрос:Как я должен решить, на стороне сервера, когда удалить сверстникам?