2014-02-14 4 views
0

Я хочу: Не выходить из системы на 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; и пользователь не сможет возобновить сеанс (означает, что пользователь будет отключен).

С другой стороны, я не могу прекратить удаление сверстников на стороне сервера вообще.

Вопрос:Как я должен решить, на стороне сервера, когда удалить сверстникам?

ответ

1

Вопрос: Как мне решить на стороне сервера КОГДА удалить сверстников?

В приложениях-браузерах клиенты могут исчезнуть без явного выхода из системы.

Обычно это обрабатывается так, что помимо явного выхода из системы клиент также считается выведенным из системы, если он не совершил звонок на сервер за последние x минут (обычно 10 или 15 минут).

Если вы хотите, чтобы клиенты оставались в системе дольше, чем вы могли бы заставить клиента «поддерживать» звонки каждые (x-1) минуты до тех пор, пока браузер остается на текущем веб-сайте.

Смежные вопросы