私の知る限り、ここで重要な値は2つあります。サーバーは毎秒クライアントにハートビートを送信しますheartbeat interval
。クライアントは直接応答します。応答がない場合、サーバーはクライアントが停止していると判断します。クライアントはheartbeat timeout
、最後のハートビートから数秒間、サーバーからのハートビートを待機します(これは明らかにより高いはずですheartbeat interval
)。サーバーから数秒以内にワードを受信しなかった場合heartbeat timeout
、サーバーは停止していると見なされます(そして、設定した他のオプションに基づいて切断/再接続を開始します。
デフォルト値はとheartbeat interval = 25s
ですheartbeat timeout = 60s
。両方の項目がサーバーに設定され、heartbeat timeout
接続時にクライアントに送信されます。
heartbeat timeout
単一のクライアントのを変更するのは簡単です。
var socket = io.connect(url);
socket.heartbeatTimeout = 20000; // reconnect if not received heartbeat for 20 seconds
ただし、サーバー上では、heartbeat interval
値は共有オブジェクト(呼び出しから返されるものであるManager)の一部であるように見えます。var io = require("socket.io").listen(server)
つまり、個々のソケットに対して簡単に変更することはできません。
いくつかのsocket.ioハッキングでそれを実現できるはずですが、その過程で他のものを壊す可能性があります...