2013-05-09 9 views
11

socket.io websocketが利用できないことを検出するためにクライアント側でできることはありますか?クライアントは、サーバーが(もはや利用可能をシャットダウンし socket.io/node.jsサーバーがダウンしているかどうかを検出

  • (S)
  • メッセージは、サーバとクライアントの間で前後に送られ、接続
  • 通常通り

    • サーバが起動されますの線に沿って何か)
    • は、私が試したサーバーが利用できないことを

    接続されたクライアントに警告しますクライアント側で 'error'と 'connect_failed'オプションを追加することはできますが、運がなくてもそれらはまったくトリガーしませんでした。どのように私はこれを達成することができます誰からの任意のアイデア?

    +3

    'var sio = io.connect(); sio.socket.on( 'error'、function(reason){ console.error( 'Socket.IO'を接続できません、理由); }); ' 試しましたか? –

    +0

    はい。私はこれを試しました - これはクライアント側にありますか?また、 "connect_failed"を試みましたが運がありません。 – Tamas

    +0

    クライアントがダウンしているサーバーに接続しようとするとAnhTúのソリューションが動作します。だから基本的には、可能なすべてのシナリオをカバーするために両方のスクリプトが必要になります。 –

    答えて

    9

    disconnectイベントは、あなたが聴きたいものです。

    var socket = io.connect(); 
    
    socket.on('connect', function() { 
        alert('Socket is connected.'); 
    }); 
    
    socket.on('disconnect', function() { 
        alert('Socket is disconnected.'); 
    }); 
    
    +0

    ありがとうマシュー! – Tamas

    +0

    私は 'connect_error'イベント[cbautistaの提案](http://stackoverflow.com/questions/16454005/socket-io-node-js-detecting-if-server-is-down#31599873)も聞くことをお勧めします。これらの2つのイベントは便利ですが、最初の接続試行が失敗した場合は何も表示されません。 – joeytwiddle

    8

    あなたは、クライアントがconnect_errorを使ってみて、その後、サーバーに接続することができなかったことを検出することができるようにしたい場合。これはsocket.io-1.3.5.jsと私のために働く。私はこれをhttps://stackoverflow.com/a/28893421/2262092で見つけました。

    ここに私のコードスニペットがあります:

    var socket = io.connect('http://<ip>:<port>', { 
        reconnection: false 
    }); 
    socket.on('connect_error', function() { 
        console.log('Failed to connect to server'); 
    }); 
    
    0

    は、私の開発中にこのバグをヒットし、私のイベントの呼び出しは、私のソケットを再接続して、私は、サーバーをリセットするたびにアップ倍増気づきました。私のために働いていた解決策が出てきましたが、これは接続を欺くものではありません。

    var socket = io.connect();

    socket.on( '接続'、関数(){

    はconsole.log( 'ユーザが接続!');

    })。

    socket.on( 'メッセージ'、関数(メッセージ){

    にconsole.log(メッセージ);

    })。 (KasperTidemannでhttps://github.com/socketio/socket.io/issues/430でこれを見つけた)

    それは私が「接続」関数内で「メッセージ」リスナーを置くbecuaseた、判明。リスナーの外に着席させると、この問題が解決されます。

    キャスパーティデマンへの歓待、あなたがいなくても。

    移動中!

    関連する問題