Potrzebuję być w stanie wykryć, kiedy użytkownik stracił połączenie z gniazdem, nie wydaje się, że socket.on("disconnect")
jest wywoływana, gdy po prostu zamykam laptopa, więc nie ma uruchom wywołanie ajax, które musi zostać uruchomione, aby zaktualizować bazę danych, aby oznaczyć użytkownika jako offline. Jak mogę sprawdzić, czy połączenie zostało zamknięte, czy co?Socket IO wykrywa, gdy klient utracił połączenie
Odpowiedz
natknęliśmy się również na to i jak wspomniano powyżej, korzystaj z własnego zegara czasu pracy serca.
Na przykład serwer będzie emitował pulsowanie co 5 sekund (wysyłamy prosty czas serwera). Klient ma 11-sekundowy limit czasu, więc ma 2 szanse na złapanie bitu. Jeśli otrzyma puls, resetujemy timer. Jeśli pominiemy oba uderzenia serca, uruchamiana jest funkcja limitu czasu i robisz, co chcesz.
Dość proste.
Jak wspomniano tutaj https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO, Socket.IO ma własną implementację pulsu. Ale domyślne ustawienia to przedział 25 sekund i próg 60s dla utraconego połączenia.
Moja rada: Ustaw wartości domyślne zgodnie z oczekiwaniami podczas testowania. W przeciwnym razie możesz pominąć próg.
przykład:
socket.set("heartbeat timeout", 10);
socket.set("heartbeat interval", 5);
To powinna być zaakceptowana odpowiedź. Działa po raz pierwszy ... W moim przypadku limit czasu i interwał są ustawione w milisekundach, więc 10000 zamiast 10 ... Doskonałe dzięki! –
- 1. Korzystanie Flask Sesja w Gevent Socket-IO
- 2. Acknowlegement vs Emit w Socket IO
- 3. połączenie użytkownika gniazda io dodane na każdym odświeżeniu strony html?
- 4. Czy mogę użyć pracownika serwisowego z socket-io?
- 5. Node.js + Socket IO + Apache + PHP usuwa port z adresu URL?
- 6. Prawidłowe połączenie klient-serwer FIFO
- 7. Jak korzystać z backbone.js z websockets/socket-io/nowjs
- 8. Wysyłanie wiadomości do określonego klienta w Socket IO
- 9. W jaki sposób język Io wykrywa zakleszczenie automatyczne?
- 10. ServerSocket + klient Socket - jak uzyskać adres IP klienta?
- 11. io.on ("połączenie", ...) kontra io.sockets.on ("połączenie", ...)
- 12. Android - Proces utracił numer
- 13. WPF ListView - wykrywa, gdy wybrana pozycja kliknięciu
- 14. klient socket.io podłączyć rozłączenie
- 15. Formularz utracił ostrość w C#
- 16. socket.io błąd - połączenie websocket jest zamknięty zanim połączenie zostanie ustanowione
- 17. Socket.io Identyfikacja użytkownika dla Socket
- 18. java.sql.SQLException: Io wyjątek: Gniazdo odczytu timed out vs zamknął połączenie
- 19. Emituj dane do określonego użytkownika przy użyciu Socket IO, Laravel, Redis, Angularjs
- 20. Klient gniazda Lua
- 21. Android - Server Socket
- 22. Jak mogę powiedzieć, który interfejs Perl IO :: Socket :: INET ma używać?
- 23. Klient ntp w pytonie
- 24. węzeł js - Socket.io-klient nie łączy się socket.io serwer
- 25. Połączenie Android z gniazdem tetheringu
- 26. Linux, gniazda, nieblokujące połączenie
- 27. Klient Java i serwer C++ wysyłanie i odbieranie przez TCP Socket
- 28. "Oparte na Monadzie" oparte na zdarzeniach IO
- 29. Haskell - Wolne połączenie z gniazdem po nagwintowaniu
- 30. Python Socket Słuchanie
że proponuje o detektor, lub „bicia serca”, który sprawdza klientów na odpowiedź z serwera. To właśnie robię. –
Zrobiłem to w poprzedniej wersji mojej strony internetowej, chociaż biorąc pod uwagę wystarczającą liczbę użytkowników w danym momencie, wydaje się, że może to być po prostu przeciążenie na serwerze, jeśli chodzi o liczbę żądań, choć może to być najlepsze, i tylko opcja. –
socket.io używa pulsu, więc jestem pewien, że jest to wykonalne. – EhevuTov