nkzawa - Detener socket.io de volver a conectar
socket io socket io js (3)
Escenario simple:
- El cliente se conecta al servidor con socket.io (
socket = io.connect(...)
) - Bloqueos del servidor
- El cliente intenta reconectarse
- El usuario le dice al cliente que se desconecte (
socket.disconnect()
) - El servidor comienza
- 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
.