socket.io wymusza rozłączenie przez odpytywanie XHR

Mam aplikację klient / serwer używającą nodejs na serwerze i socket.io jako mechanizmu połączenia. Z powodów związanych z moją aplikacją chcę mieć tylko jedno aktywne połączenie na przeglądarkę i odrzucić wszystkie połączenia z innych kart, które mogą zostać otwarte później podczas sesji. Działa to doskonale w przypadku WebSockets, ale jeśli WebSockets nie jest obsługiwane przez przeglądarkę, a zamiast tego używane jest odpytywanie XHR, rozłączenie nigdy nie ma miejsca, więc jeśli użytkownik po prostu odświeży stronę, nie jest to interpretowane jako ponowne połączenie (mam opóźnienie ponowne połączenie i przywracanie sesji), ale jako nowa karta, która kończy się odrzuceniem połączenia, ponieważ stare połączenie utworzone przez tę samą kartę jest nadal aktywne.

Szukam sposobu, aby skutecznie zakończyć połączenie z klientem po każdym odświeżeniu. Próbowałem związać się zbeforeunload i wołaniesocket.disconnect() po stronie klienta, a także wysyłanie wiadomości w rodzajusocket.emit('force-disconnect') i wyzwolenie rozłączenia z serwerem bez powodzenia. Czy coś mi umyka? Doceniam Twoją pomoc!

Przeczytałemto pytanie i nie mogłem znaleźć go przydatnego w moim konkretnym przypadku.

questionAnswers(2)

yourAnswerToTheQuestion