socket.io erzwingt eine Trennung über XHR-Polling
Ich habe eine Client / Server-Anwendung, die nodejs auf dem Server und socket.io als Verbindungsmechanismus verwendet. Aus Gründen, die für meine Anwendung relevant sind, möchte ich nur eine aktive Verbindung pro Browser haben und alle Verbindungen von anderen Registerkarten ablehnen, die später während der Sitzung geöffnet werden können. Dies funktioniert gut mit WebSockets, aber wenn WebSockets nicht vom Browser unterstützt wird und stattdessen XHR-Polling verwendet wird, wird die Verbindung nie getrennt. Wenn der Benutzer also nur die Seite aktualisiert, wird dies nicht als erneute Verbindung interpretiert (ich habe eine Verzögerung für Erneutes Verbinden und Wiederherstellen der Sitzung), jedoch als neuer Tab, der dazu führt, dass die Verbindung abgelehnt wird, da die alte Verbindung, die über denselben Tab hergestellt wurde, noch aktiv ist.
Ich suche nach einer Möglichkeit, die Verbindung vom Client bei jeder Aktualisierung effektiv zu beenden. Ich habe versucht, an diebeforeunload
und anrufensocket.disconnect()
auf der Client-Seite und auch das Senden einer Nachricht wiesocket.emit('force-disconnect')
und Auslösen der Trennung vom Server ohne Erfolg. Vermisse ich hier etwas? Schätze deine Hilfe!
Ich habe gelesendiese Frage und konnte es für meinen speziellen Fall nicht nützlich finden.