2011-08-25 11 views
5

Ho un client socket.io connesso a un server node.js. Se uccido node.js nella riga di comando, il client si blocca immediatamente (ad esempio, le interruzioni di comunicazione), ma c'è un ritardo di ~ 20 secondi prima che venga generato l'evento "disconnect". Questo comportamento è di progettazione? Esiste un'opzione di configurazione per ridurre il ritardo nell'attivazione dell'evento di disconnessione?Socket.io ritardo nell'attivazione dell'evento "disconnect"?

Sembra che questo comportamento sia cambiato in un aggiornamento relativamente recente (ultimi 6 mesi) di socket.io. Prima che la funzionalità di riconnessione fosse incorporata a socket.io stesso, ho implementato la mia logica di riconnessione utilizzando un gestore di eventi "disconnect" e in quel momento l'evento "disconnect" si è attivato quasi istantaneamente quando la comunicazione del server si è interrotta.

risposta

6
+1

questa non è nemmeno una risposta alla domanda, come si può accettare? O almeno per dare una spiegazione di quanto il timeout vicino risolva questo problema! – Iamisti

2

Penso che questo sia probabilmente un modello di progettazione. Il client può presumere che il server sia 'temporaneamente' irraggiungibile (traffico di rete ecc.) E in sostanza continui a tentare di raggiungerlo ... fino a quando il timeout del client non inizia.

Invio una disconnessione (socket.disconnect()) al server direttamente dal client e non ottengo questo problema.