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.