Devo essere in grado di rilevare quando un utente ha perso la connessione al socket, non sembra che venga chiamato socket.on("disconnect")
quando chiudo il mio laptop, quindi non lo fa eseguire la chiamata ajax che deve essere eseguita per aggiornare il database per contrassegnare l'utente come offline. Come posso verificare se la connessione è stata chiusa o altro?Socket IO rileva quando il client ha perso la connessione
risposta
ci siamo imbattuti anche in questo e come accennato in precedenza utilizzare il nostro proprio battito del cuore.
Ad esempio il server emetterà un heartbeat ogni 5 secondi (inviamo semplicemente il tempo del server). Il client ha un timeout di 11 secondi, quindi ha 2 possibilità di catturare l'heartbeat. Se riceve il battito cardiaco, azzeriamo il timer. Se perdiamo entrambi gli heartbeat, viene eseguita la funzione di timeout e tu fai quello che vuoi lì.
Abbastanza semplice.
Come indicato qui https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO, Socket.IO ha la propria implementazione heartbeat. Ma i valori di default sono un intervallo di 25 secondi e una soglia di 60 secondi per una connessione persa.
Quindi il mio consiglio: Impostare i valori predefiniti come previsto durante il test. Altrimenti potresti perdere la soglia.
Esempio:
socket.set("heartbeat timeout", 10);
socket.set("heartbeat interval", 5);
Questa dovrebbe essere la risposta accettata. Funziona per la prima volta ... Nel mio caso il timeout e l'intervallo sono impostati in millisecondi, quindi 10000 anziché 10 ... Perfetto Grazie! –
- 1. Riconnessione IO socket?
- 2. Perché questo server che ho scritto non rileva che il client ha chiuso il socket?
- 3. Sailsjs Socket IO
- 4. browser e socket Android io
- 5. Elenco dei nomi utente dei client connessi tramite socket io
- 6. java.sql.SQLException: Io eccezione: Socket lettura scaduta vs connessione chiusa
- 7. Come posso fare una connessione socket client/client (browser)?
- 8. Invio messaggio a client specifici in Socket IO
- 9. Socket IO Server to Server
- 10. Come simulare la perdita della connessione socket?
- 11. Nuovo thread per connessione client nel server socket?
- 12. Rileva l'interruzione della connessione su un socket aperto da fsockopen()
- 13. C socket socket client/server
- 14. Il socket non ha attributo AF_INET?
- 15. CardView ha perso margine durante il gonfiaggio
- 16. Linux, socket, connessione non bloccante
- 17. wpf listview ha perso il fuoco
- 18. L'attività ha perso la finestra all'avviso. Il metodo show()
- 19. Connessione socket Web non riuscita dal client Android
- 20. Il client Jersey chiude la connessione in caso di eccezione?
- 21. HTTP connessione persistente vs connessione socket TCP
- 22. Utilizzando Flask Session Gevent Socket-IO
- 23. Rileva timeout connessione java client Android da PHP
- 24. socket.io-client come impostare l'intestazione della richiesta quando si effettua la connessione
- 25. Socket IO solo sessione non persistente
- 26. connessione SSL Socket iOS
- 27. Haskell - Connessione socket lenta con filettatura
- 28. Connessione client TCP
- 29. Node.js + Socket IO + Apache + PHP rimuove la porta dall'URL?
- 30. Connessione socket PHP tramite proxy
mi avrebbe proposto avere un ascoltatore, o un 'battito' che controlla i clienti di una risposta dal server. Questo è quello che faccio. –
L'ho fatto in una versione precedente del mio sito web, sebbene abbia dato a un numero sufficiente di utenti in un dato momento sembra che potrebbe essere una sorta di sovraccarico sul server, per quanto riguarda il numero di richieste, anche se potrebbe essere il migliore, e solo l'opzione. –
socket.io utilizza un heartbeat, quindi sono sicuro che questo è fattibile – EhevuTov