javascript node.js websocket socket.io

javascript - ¿Cómo configurar la reconexión en socket.io?



node.js websocket (4)

Esta es una pregunta antigua, pero para otras personas como yo, que están buscando cómo configurar la reconexión en socket.io (1.x), aquí hay una sintaxis correcta:

var socket = new io.connect(''http://localhost:8181'', { ''reconnection'': true, ''reconnectionDelay'': 1000, ''reconnectionDelayMax'' : 5000, ''reconnectionAttempts'': 5 });

Creo conexión socket.io con el siguiente código

var socket = new io.connect(''http://localhost:8181'', { ''reconnect'': true, ''reconnection delay'': 500, ''max reconnection attempts'': 50 });

Pero cuando mato el servidor CTRL + C y lo vuelvo a iniciar, la reconexión no está sucediendo. Pero desconecte el evento planteado en el lado del cliente. ¿Qué tal razón de ello?


Esta es una pregunta antigua, pero tuve la misma pregunta (por una razón diferente) al usar v1.4.5. La aplicación de mi sala de chat funcionó a la perfección, pero cuando presioné Ctrl+C en el terminal, mi navegador continuó en bucle e informaba ERR_CONNECTION_REFUSED cada pocos segundos hasta que lo cerré.

Cambiar una respuesta anterior solo un poco me dio la solución.

Para v1.4.5, aquí está mi código original para "var socket" en mi archivo js de cliente:

var socket = io();

Y aquí está la solución:

var socket = io({ ''reconnection'': true, ''reconnectionDelay'': 1000, ''reconnectionDelayMax'' : 5000, ''reconnectionAttempts'': 5 });

Obviamente, podría cambiar los valores si lo deseo, pero el punto importante es que esto eliminó las solicitudes de reconexión sin fin.


Me doy cuenta de que esta es una pregunta antigua, pero he tenido algunos problemas con la reconectación del socket io y encontré esta publicación alta en los resultados de búsqueda, así que pensé que podría contribuir. Intente depurar exactamente qué eventos se activan con el siguiente código:

# coffeescript. compile if you''re writing javascript, obviously. socket.on ''connect'',-> console.log ''connected'' socket.on ''reconnect'',-> console.log ''reconnect'' socket.on ''connecting'',-> console.log ''connecting'' socket.on ''reconnecting'',-> console.log ''reconnecting'' socket.on ''connect_failed'',-> console.log ''connect failed'' socket.on ''reconnect_failed'',-> console.log ''reconnect failed'' socket.on ''close'',-> console.log ''close'' socket.on ''disconnect'',-> console.log ''disconnect''

Esto debería darle más información sobre el estado del socket del cliente.

Además, intente buscar en la pestaña Red de su inspector web para ver si está activando solicitudes XHR como alternativa. Finalmente, en su consola web, intente escribir io.sockets y expándalo para ver si realmente está intentando reconectarse o no.

He encontrado problemas con reconnect_failed no disparar, y la reconexión no se reinicia. Los siguientes son enlaces a discusiones sobre estos temas en github.

retardo de reconexión: el retroceso exponencial no se restablece correctamente

reconnect_failed nunca se dispara

Algunas posibles soluciones / soluciones


el retardo de reconexión es un aumento demasiado pequeño de 500 ms que, además de esos 50 reintentos, significa 500 * 50 = 25000 ms, lo que equivale a 25 segundos. Si eso no ayuda a establecer un tiempo de espera en un evento de error en el lado del cliente para volver a crear el objeto de socket (Después del error y algún retardo, vuelva a intentar crear la conexión).