17

簡単なシナリオ:

  1. クライアントは socket.io ( socket = io.connect(...))でサーバーに接続します
  2. サーバーがクラッシュする
  3. クライアントが再接続を試みる
  4. ユーザーはクライアントに切断するよう指示します ( socket.disconnect())
  5. サーバーの起動
  6. クライアントの再接続

一度 socket.io が再接続を試み始めると、もう止められないようです。ステップ 4 でステップ 6 が起こらないようにしたいのですが、そうではありません。代わりに何に電話すればいいですか?

4

6 に答える 6

31

再接続を自分で処理したい場合があります。

// Disables the automatic reconnection
var socket = io.connect('http://server.com', {
    reconnection: false
});

// Reconnects on disconnection
socket.on('disconnect', function(){
    socket.connect(callback);
});

注: のreconnect代わりに使用される古いバージョンreconnection

于 2012-06-29T18:19:01.543 に答える
2

必要なのは、プロパティをに設定 socket.io clientしないように構成することだと思いますreconnectreconnectfalse

server.jsこれをテストするために小さな server( ) を作成しました。

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

次にtest.js、再接続しないことをテストするためにこれを作成しました

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

動作させるには、発行からインストールするか、 (dev-)を に追加test.jsしてインストールする必要があります。socket.io-clientnpmnpm install socket.io-clientsocket.io-clientdependencypackage.json

実行server.js中に停止すると、すぐに返されます。これは、あなたが望む結果だと思います。クライアントに設定すると、サーバーに再接続しようとしますが、これは望ましい動作ではありませんtest.jstest.jsreconnecttrue

于 2012-06-23T01:11:38.870 に答える