2011-08-25 19 views
5

Tengo un cliente socket.io conectado a un servidor node.js. Si elimino node.js en la línea de comando, el cliente se congela inmediatamente (es decir, la comunicación se detiene), pero hay un retraso de ~ 20 segundos antes de que se active el evento "desconectar". ¿Es este comportamiento por diseño? ¿Hay alguna opción de configuración para reducir el retraso en disparar el evento de desconexión?¿Socket.io demora en disparar el evento "desconectar"?

Parece que este comportamiento cambió en una actualización relativamente reciente (últimos 6 meses) de socket.io. Antes de que se incorporase la funcionalidad de reconexión a socket.io, implementé mi propia lógica de reconexión utilizando un controlador de eventos "desconectar" y en ese momento el evento "desconectar" se disparó casi al instante cuando se detuvo la comunicación del servidor.

Respuesta

6
+1

esto ni siquiera es una respuesta para la pregunta, ¿cómo podría aceptarlo? O al menos dar una explicación de qué tan cerca el tiempo de espera soluciona este problema. – Iamisti

2

Creo que este es un patrón de diseño. El cliente puede presumir que el servidor es "temporalmente" inalcanzable (tráfico de red, etc.) y esencialmente seguirá tratando de alcanzarlo ... hasta que se active el tiempo de espera del cliente.

Envío de una desconexión (socket.disconnect()) al servidor directamente desde el cliente, y no entiendo este problema.

Cuestiones relacionadas