Zeitlimit für die Verarbeitung von Sitzungen auf der Clientseite

8

Das Szenario besteht darin, dass ein Benutzer eine Benachrichtigung erhalten soll (etwa über eine typische JS-Warnung oder Weiterleitung usw.), wenn ihre Sitzung kurz vor dem Ablauf steht. Ein paar Möglichkeiten, dies zu erreichen, ist

  1. Verwenden Sie JavaScript Timeout-Funktion wie hier .
  2. Server-Push mit WebSockets , die natürlich HTML5-Unterstützung benötigen.

Was sind die relativen Vorzüge / Nachteile dieser beiden Ansätze? Abgesehen von diesen, gibt es andere Möglichkeiten, dies zu erreichen (einige Standard-Bibliothek usw.). Mein Backend ist Java EE (Struts + Spring).

    
Santosh 03.04.2012, 12:39
quelle

2 Antworten

7

Mit Hilfe der JavaScript-Timeout-Funktion müssen Sie sicherstellen, dass die Funktion zurückgesetzt werden sollte, wenn der Benutzer AJAX-Aufrufe tätigt, da dies als Benutzeraktivität behandelt werden sollte.

Wenn der verwendende Server mit Web-Sockets pusht, sind Sie möglicherweise nicht in der Lage, Nutzer mit nicht so aktuellen Browsern anzusprechen. Möglicherweise müssen Sie einige Signalisierungs-Frameworks verwenden und sogar Ihren Back-End-Stack ändern. (Ich kann mir ab jetzt socket.io & amp; SignalR vorstellen)

Beide Ansätze werden nicht grade degradiert. Also, IMO Javascript Option hört sich besser an, da es eine größere Zielgruppe ansprechen kann und das würde erfordern, dass Sie einige Randfall-Szenarien ansprechen. Wenn ich die Wahl hätte, würde ich dieses Feature nicht implementieren. Aber so ist es kaum.

UPDATE: Hier ist ein anderer Ansatz, an den ich denken könnte.

Jedes Mal, wenn eine Seite bedient wird, würde ich ein Cookie senden, auf das auf der Client-Seite zugegriffen werden kann, das die UTC-Zeit enthalten würde, zu der die Sitzung eine Zeitüberschreitung hat. In meinem Code würde ich einen setInterval setzen, der den Wert lesen und die lokale Zeit mit UTC vergleichen würde, und wenn er sich schließt, würde ein Popup-Fenster anzeigen, dass die Zeitüberschreitung in X Sekunden usw. auftritt.

Dies wird wiederum nicht korrekt beeinträchtigt und hängt von der Zeit des Client-Rechners ab. Also, wenn es falsch ist, wird diese Funktionalität nicht zuverlässig funktionieren.

    
Ramesh 06.04.2012, 08:50
quelle
1

Was ist mit dem Erstellen eines Filters, bei dem Sie ein Cookie mit der Anzahl der Sekunden bis zum Timeout setzen?

Also setzen Sie diesen Wert immer auf (Sitzungskonfiguration- & gt; Sitzungs-Timeout) * 60.

Auf der Vorderseite würden Sie mit setInterval diesen Cookie-Wert aktualisieren, indem Sie das Intervall vom aktuellen Cookie-Wert subtrahieren, so dass Sie nicht von der Zeitkonfiguration abhängig sind.

    
Lerial 28.06.2016 15:41
quelle