what socket nkzawa socket.io

nkzawa - Detener socket.io de volver a conectar



socket io socket io js (3)

Escenario simple:

  1. El cliente se conecta al servidor con socket.io ( socket = io.connect(...) )
  2. Bloqueos del servidor
  3. El cliente intenta reconectarse
  4. El usuario le dice al cliente que se desconecte ( socket.disconnect() )
  5. El servidor comienza
  6. El cliente se reconecta

Parece que una vez que socket.io comienza a intentar reconectarse, ya no puede detenerse más. Quiero el paso 4 para evitar que ocurra el paso 6, pero no es así. ¿Qué tengo que llamar en su lugar?


Creo que lo que necesita es configurar el client socket.io para que no se reconnect a reconnect se establece la propiedad reconnect a false

server.js un pequeño servidor ( server.js ) para probar esto:

var io = require(''socket.io'').listen(8888); io.sockets.on(''connection'', function (socket) { socket.emit(''news'', { hello: ''world'' }); socket.on(''my other event'', function (data) { console.log(data); }); });

Luego creé este test.js para probar que no se reconecta

var client = require(''socket.io-client''), socket = client.connect(''http://localhost:8888'', { ''reconnect'': false }); socket.on(''connect'', function () { socket.on(''news'', function (data) { console.log(data); socket.emit(''my other event'', { my: ''data'' }); }); });

Para que test.js funcione, deberá instalar socket.io-client desde npm emitiendo npm install socket.io-client o agregando socket.io-client (dev-) dependency a su package.json .

Cuando dejo server.js mientras test.js está ejecutando, test.js devolverá inmediatamente, lo que creo que es el resultado deseado. Cuando configuro la reconnect en true el cliente intentará volver a conectarse al servidor, que no es el comportamiento deseado


En un nuevo socket.io 1.1.x puede hacer lo siguiente:

var manager = io.Manager(''http://localhost:9823'', { autoConnect: false });

Aquí hay un enlace de blog .


Es posible que desee manejar la reconexión usted mismo.

// Disables the automatic reconnection var socket = io.connect(''http://server.com'', { reconnection: false }); // Reconnects on disconnection socket.on(''disconnect'', function(){ socket.connect(callback); });

Nota: las versiones antiguas se usan para reconnect lugar de reconnection .