Domanda

Sto lavorando su un'applicazione GWT-ext. In questa applicazione sono riuscito sessione lato client. Per questo scrivo qui di seguito il codice:

Per gestire la sessione: import com.google.gwt.user.client.Timer;

public class ClientTimers {

    private static final Timer SESSION_MAY_HAVE_EXPIRED_TIMER = new Timer() {

        @Override
        public void run() {
            // Warn the user, that the session may have expired.
            // You could then show a login dialog, etc...
        }
    };

    public static void renewSessionTimer() {

        // First cancel the previous timer
        SESSION_MAY_HAVE_EXPIRED_TIMER.cancel();

        // Schedule again in 5 minutes (maybe make that configurable?)
        // Actually, let's subtract 10 seconds from that, because our timer
        // won't be synchronized perfectly with the server's timer.
        SESSION_MAY_HAVE_EXPIRED_TIMER.schedule(5 * 60 * 1000 - 10000);
    }
}

Per ottenere l'attività degli utenti:

    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");
        }
    });

Questo codice è bene, ma i miei problemi lavorando: Questo codice farà uscire automaticamente il time out occurs.For mio codice Voglio che al clic o il tasto verso il basso si dovrebbe fare logout. Caso è come questo: Se l'utente è connesso e il tempo di uscire è 5 min.User non fare alcuna attività sullo schermo che in questo momento secondo il codice di cui sopra si registrerà automaticamente come 5 min completa

Ora la mia richiesta è che se l'utente connesso e non fa nulla per 5 mins.It non dovrebbe fare alcuna disconnesso automatically.Instead di disconnessione al termine dei 5 minuti, Se l'utente non clicca tasto su e giù il 6 min allora dovrebbe fare il log out processo.

Fondamentalmente il log out processo come il timer superare il tempo specificato dovrebbe essere fatto sulla attività degli utenti, non automaticamente.

È stato utile?

Soluzione

Nel Timer, incrementare una variabile per ogni secondo. E quando l'utente clicca su uno dei tasti dopo 5 minuti o il 6 minuto di controllare la variabile contatore e se la variabile è superiore a 6 di quanto si può utilizzare window.location.reload (); per il logout o ricarica ().

Altri suggerimenti

Credo che la cosa che si sta per searchin è:

window.location.reload ();

Fuoco ogni pochi secons con un timer, in modo che l'utente sempre Apper ad essere attivo.

(Btw ho che da tematiche vicine a GWT -ext )

Installa un gestore di eventi JavaScript su un div invisibile che copre l'intera area. Se diventa un evento, inviare una richiesta AJAX al server.

Il server può quindi fare quello che deve fare. Sul lato client, si può attendere una risposta dalla richiesta AJAX e la visualizzazione "Sei stato disconnesso".

C'è uno svantaggio di questo approccio: gli oggetti memorizzati nella sessione saranno mantenuti in vita per troppo tempo. Quindi, anche se l'utente non si disconnette e appena se ne va (o il suo browser si blocca), la sessione rimarrà in vita.

Dopo un paio di giorni, così tante sessioni morti si accumulano che andrà in crash il server.

Quindi la soluzione migliore è quella automatica sessione l'utente, come si fa già e installare un gestore di eventi AJAX come descritto sopra per visualizzare un messaggio quando l'utente torna al browser.

In questo modo, il server può ripulire le sessioni di morte e l'utente riceve un messaggio quando può leggerlo (quando si è di fronte allo schermo).

Si noti che non è possibile distinguere tra l'utente e l'equipaggio di pulizia che colpisce il mouse.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top