2017-01-27 4 views
0

デフォルトのタイムアウト値はありますか?接続が確立されなかった場合、何回も試行した後にsocket.io APIからタイムアウトが得られますか?私のアプリケーションではsocket.ioを使ってNodejsサーバーに接続しようとしていますが、接続が確立されていないか、到達できない場合は、少なくともx回試して​​からイベントを取得してから、サーバーに接続の問題がある。私のクライアントは継続的にサーバーに接続して、コンソールに次の例外を印刷しようとしている方法が、いくつか:ここで接続が確立されない場合にタイムアウトする方法

socket.io-1.3.5.js:2 GET https://chatapp.local:8898/socket.io/?EIO=3&transport=polling&t=1485528658982-172 net::ERR_CONNECTION_REFUSED 

が私のコードです:

接続は内確立していない場合、私はタイムアウトを設定するにはどうすればよい
socket = io(socketUrl, {'force new connection': true}); 

    socket.on('connect', function() { 
     uiHandler("socket.connect"); 
    }); 

    socket.on('error', function (err) { 
     uiHandler("socket.error", {error: err}); 
    }); 

    socket.on('disconnect', function() { 
     uiHandler("socket.disconnect"); 
    }); 

    socket.on('end', function() { 
     uiHandler("socket.end"); 
    }); 

30秒。どんな提案もお願いします。

答えて

0

私はあなたが各接続にタイムアウト値と再試行回数を設定することができますAPIドキュメントで読んだから、あなたが30秒間試してみたいので、もしあなたは基本的に

maxTime = timeout * reconnectionAttempts 

を持っていることを注意してください各再試行(デフォルトは1000 ms)とランダム化係数の間に遅延があります。ConnectionErrorをクライアントに送信する前に、その期間全体を制御したい場合は、少し修正する必要があります。あなたがするたびにエラーがいずれかCONNECT_TIMEOUTまたはCONNECTION_ERRORとして放出され、接続に失敗していることも確認できるAPIドキュメントから

。使用可能なすべての試行が失敗した場合はreconnect_failedが解雇されます。そうすれば、何かが間違っていることをユーザーに伝えることができます。

さらに一般的な方法では、非同期プロセスに対する制御を実装するいくつかのオプションがあります。すぐに約束された二つのことが思い浮かぶ。より一般的な&拡張可能なアプローチのためにそれらを探索したいかもしれません。

詳細をご希望の場合、または正しく回答しない場合は、お気軽にお問い合わせください。

+0

ご意見ありがとうございます。何回も試行しても接続が確立されなければ、reconnect_failedイベントが発生します。ここにリンクがあります:https://github.com/socketio/socket.io-client/issues/705 –

関連する問題