Hi,
wir versuchen im Chat eine kleine Anfrage an den Server zu schicken, um diesem mitzuteilen, dass man den Chat verlassen hat, wenn man die Seite wechselt oder den Tab schließt.
Leider kommt es hier auf den verwendeten Browser an, ob diese Anfrage überhaupt noch abgeschickt wird.
Ist das nicht der Fall, können wir nicht viel mehr machen, als die Benutzer nach einem Timeout (3 Minuten) aus dem Chat zu entfernen.
Diese Aktion wird mit dem stündlichen Cleanup-Cronjob und jedes Mal, wenn ein Nutzer im Chat eine Nachricht vom Server lädt, ausgeführt.
// Edit: Wir könnten diese Aktion noch beim Aufruf der Chat-Index-Seite (also der Raumauswahl) durchführen.
Für das Dashboard bzw. alle Seiten, die eine der Boxen einbinden, dürfte das zu inperformant sein.
// Edit: Safari ist einer der Browser, der diese Anfrage eben nicht sendet.
Chrome und Firefox unterstützen die sendBeacon-Funktion, die extra für solche Zwecke gedacht ist.
Wenn diese nicht unterstütz wird, müssen wir auf normale Ajax-Anfragen zurückgreifen, aber das wird beim Entladen eines Tabs in den meisten Browsern nicht mehr ausgeführt.
// Edit:
Es ist tatsächlich mal wieder nur noch der Safari, der die Technik nicht unterstützt: https://caniuse.com/#feat=beacon
In der Preview der nächsten Version soll es wohl endlich unterstützt werden …
Ist leider nicht das erste Mal, dass Apple mit seinem Browser den anderen hinterherhinkt.