Время ожидания сеанса клиента gwt - PullRequest
1 голос
/ 08 сентября 2011

Я использую gwt 2.3 с платформой gwtp. В этом приложении я хочу поддерживать время сеанса 5 минут. Это означает, что если текущий пользователь не делает до 5 минут, и он приходит через пять минут, то на свое первое событие действие на экране, он должен быть отключен. В gwt есть класс с именем Timer, который можно использовать в этих вопросах. Но я не понимаю, как распознать действие пользователя на экране. Я сделал это на Google и нашел код для gwt-ext. Ниже приведен код GWT-вн

Ext.get(“pagePanel”).addListener(“click”, new EventCallback() {
    @Override
    public void execute(EventObject e) {
        MessageBox.alert(“On Mouse Click”);
    }
});

Ext.get(“pagePanel”).addListener(“keydown”, new EventCallback() {

    @Override
    public void execute(EventObject e) { 
        MessageBox.alert(“On Key Press Click”);
    }
});

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

Код того же типа, который я ищу в gwt. Если есть другой лучший способ сделать это, пожалуйста, дайте мне знать. Заранее спасибо

1 Ответ

3 голосов
/ 08 сентября 2011

Если действие / событие может быть действительно всем, я бы решил с помощью NativePreviewHandler следующим образом:

boolean expired;

final Timer logoutTimer = new Timer() {
    @Override
    public void run() {
        expired = true;
    }
};

NativePreviewHandler nph = new NativePreviewHandler() {

    @Override
    public void onPreviewNativeEvent(NativePreviewEvent event) {
        if (!expired) {
            logoutTimer.cancel();
            logoutTimer.schedule(300000);
        } else {
            // do your logout stuff here
        }
    }
};

Event.addNativePreviewHandler(nph);

Если пользовательская оболочка выходит из системы без нового действия через 5 минут:

final Timer logoutTimer = new Timer() {
    @Override
    public void run() {
        // do your logout stuff here
    }
};

NativePreviewHandler nph = new NativePreviewHandler() {

    @Override
    public void onPreviewNativeEvent(NativePreviewEvent event) {
        // Of course do this only when logged in:
        logoutTimer.cancel();
        logoutTimer.schedule(300000);
    }
};

Event.addNativePreviewHandler(nph);
...