socket.io - example - socket io tutorial




Arrêtez socket.io de se reconnecter (2)

Scénario simple:

  1. Le client se connecte au serveur avec socket.io ( socket = io.connect(...) )
  2. Plantage du serveur
  3. Le client essaie de se reconnecter
  4. L'utilisateur dit au client de se déconnecter ( socket.disconnect() )
  5. Le serveur démarre
  6. Le client se reconnecte

Il semble qu'une fois que socket.io commence à tenter de se reconnecter, il ne peut plus être arrêté. Je veux que l'étape 4 empêche l'étape 6 de se produire, mais ce n'est pas le cas. Qu'est-ce que je dois appeler à la place?


Je pense que ce dont vous avez besoin est de configurer le client socket.io pour ne pas se reconnect est défini la propriété se reconnect à false

J'ai créé un petit serveur ( server.js ) pour tester ceci:

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);
  });
});

Puis j'ai créé ce test.js pour tester qu'il ne se reconnecte pas

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' });
    });
});

Pour que test.js fonctionne, vous devez installer socket.io-client partir de npm émettant npm install socket.io-client ou en ajoutant la socket.io-client (dev-) à votre package.json .

Quand j'arrête server.js pendant que test.js est en cours d'exécution test.js retournera immédiatement ce que je crois est votre résultat désiré. Lorsque je définis la reconnect à true le client essaie de se reconnecter au serveur, ce qui n'est pas le comportement souhaité


Dans un nouveau socket.io 1.1.x vous pouvez faire ce qui suit:

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

Voici le lien du blog .