6

socket.io のタイムアウト値に関するドキュメントを見つけるのに苦労しています。クライアントで //cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.16/socket.io.min.js を使用し、サーバー側で Flask-SocketIO を使用しています。

ソケットを作成する方法は次のとおりです。

namespace = '/coregrapher'

var socket = io.connect('http://' + document.domain + ':' + location.port + namespace);

socket.on('connect', function() {
    socket.emit('my event', {data: 'I\'m connected!'});
});

socket.on('my response', function(msg) {
    $('#result').append(msg.data);
});

問題は、サーバーがクライアントに何も送信しない場合、またはその逆の場合、クライアントが切断され、サーバーがクライアントに別の発行を行おうとすると、クライアントが既に切断されているために失敗することです。クライアントの接続を維持するにはどうすればよいですか?

ありがとう!

4

2 に答える 2

2

全体像の問題は、サーバーが長時間キープアライブ パケットに応答しない場合、クライアントが接続を切断し、再接続を試みることです。再接続できない場合は、最終的に試行を停止します。

つまり、再試行ロジックの構成を変更したい場合は、.connect()呼び出しの 2 番目の引数としてオプション オブジェクトを送信できます。ドキュメントhereに従って、次のオプションを制御できます。

オプション:

  • reconnect 自動的に再接続するかどうか (true)
  • reconnectionDelay 新しい再接続を試みるまでの待機時間 (1000)
  • reconnectionDelayMax 再接続間で待機する最大時間 (5000)。試行ごとに、reconnectionDelay で指定された量だけ再接続が増加します。
  • タイムアウト connect_error および connect_timeout イベントが発行される前の接続タイムアウト (20000)

したがって、自動再接続をより長い時間試行し続けたい場合は、最後の 3 つのオプションの回数を増やすことができます。

于 2014-11-27T02:28:12.400 に答える