2017-01-15 5 views
0

Ich erstelle Chat-Website mit Kolben socketio. Ich kontrolliere Leute, die sich mit der Sitzung chatten (Wenn ich mich anmelde, setze ich die Sitzung auf usernake) wie die Sitzung ['name']=username Und wenn der Benutzer keinen Chat mehr hat, stelle ich seine Sitzung auf keine. Aber in dieser Situation, wenn der Benutzer die Website schließt, indem er nicht auf Abmelden-Schaltfläche klickt, gibt es die Sitzung des Benutzers durch den Benutzer abmelden .. so der Name des Benutzers ist auf der Liste ...Wie verwalten Benutzer in Kolben mit Sitzung?

So verwalten Sie Menschen, die sich nicht abmelden durch Schließen der Website?

+0

Mögliche Duplikat von [dies] (http://stackoverflow.com/questions/3888902/javascript-detect-browser-close-tab-close-browser) SO Frage. –

Antwort

0

Sie können versuchen, Javascript zu verwenden, um ein Browser-Schließereignis zu erkennen. Es ist keine perfekte Lösung, aber es wird Ihnen in vielen Fällen die Möglichkeit geben, zu erkennen, dass der Benutzer das System verlässt, und einen Code auslösen, um die Sitzung zu beenden.

Sie können verschiedene Ansätze überprüfen, aber ich sah this question, die ziemlich hilfreich schien.

0

Per dieser doc http://flask.pocoo.org/docs/0.12/api/ Sie haben diesen Parameter für flask.session

permanent Wenn für permanent_session_lifetime Sekunden auf True die Sitzungsdauer festgelegt. Der Standardwert ist 31 Tage. Wenn der Wert False (Standardeinstellung) ist, wird die Sitzung gelöscht, wenn der Benutzer den Browser schließt.

Auch von Kolben-socketio gibt es eine Erwähnung des Sitzungsverhaltens

Den Sitzungskontext globale verhält sich in einer anderen Art und Weise als in regelmäßigen Anfragen. Eine Kopie der Benutzersitzung zu dem Zeitpunkt, zu dem die SocketIO-Verbindung hergestellt wird, wird den Handlern zur Verfügung gestellt, die im -Kontext dieser Verbindung aufgerufen werden. Wenn ein SocketIO-Handler die -Sitzung ändert, wird die geänderte Sitzung für zukünftige SocketIO-Handler beibehalten, aber normale HTTP-Route-Handler sehen diese Änderungen nicht. Effektiv, wenn ein SocketIO-Handler die Sitzung ändert, wird ein "Fork" von die Sitzung exklusiv für diese Handler erstellt. Der technische Grund für diese Einschränkung ist . Um die Benutzersitzung zu speichern, muss ein Cookie an den Client gesendet werden. Hierfür sind HTTP-Anforderung und Antwort erforderlich, die in einer SocketIO-Verbindung nicht vorhanden sind. Bei Verwendung serverseitiger Sitzungen , wie sie von den Flask-Session- oder Flask-KVSession-Erweiterungen bereitgestellt werden, können Änderungen an der Sitzung in den Handlern HTTP Route von SocketIO-Handlern erkannt werden, solange die Sitzung in nicht geändert wird die SocketIO-Handler.

Verwandte Themen