2013-08-15 12 views
8

サーバーがオフラインかどうか、またはその他の理由でサーバーに接続できない場合は、どうすれば検出できますか。私のコードはこのように見えます。Socket.ioサーバーオフラインで接続します。

this.socket = io.connect(connectionInfo, { 
    reconnect:false 
}); 

エラーは発生しないため、try/catch句は機能しません。失敗した接続をキャッチするために、切断イベント

  • this.socket.on("connect_failed")をキャッチする接続イベント
  • this.socket.on("disconnect")をキャッチする

  • 答えて

    12

    使用

    • this.socket.on("connect")

    使用this.socket.io.on(「connect_errorを試みます"、コールバック)。

    サーバーがオフラインになっているとクライアントが使用する接続しようとするとあなたはhttps://github.com/LearnBoost/socket.io/wiki/Exposed-events

    +0

    これは「CONNECT_FAILED」と「reconnect_failed」をthis--見つけ、他の人々を助け0.9.xバージョンのSocket.io(0.9.16を含む)ではイベントが正しく起動されません。詳細はこちら:https://github.com/LearnBoost/socket.io/issues/652と回避策:https://groups.google.com/forum/#!topic/socket_io/7BynuejEmts – mikermcneil

    2

    で、すべてのイベントを見つけることができます:

    socket.on('error', function (err) { 
        console.log(err); 
    }); 
    

    ように、クライアントは、彼がサーバに到達することはできません知っています。

    +1

    テストの結果、最新の安定したSocket.ioクライアント(v0.9.16)でこのように動作するようには見えません。 – mikermcneil

    4

    1.0アップデートのため、接続イベントが異なります。 詳細はこのページを読んで:私の場合はhttp://socket.io/docs/migrating-from-0-9/

    、私はそうのような接続エラーを検出することができます:場合

    var manager = io.Manager('http://'+window.location.hostname+':3000', { /* options */ }); 
    manager.socket('/namespace'); 
    manager.on('connect_error', function() { 
        console.log("Connection error!"); 
    }); 
    
    this.socket = io.connect('http://'+window.location.hostname+':3000'); 
    
    関連する問題