socket.io サーバーとクライアントが正しく動作しています。サーバーがダウンするたびに、クライアントは 5 秒ごとに再接続を試みます。サーバーが再び起動すると、問題なく接続されます。
しかし、問題は、サーバーを再度起動する前に長時間待機すると発生します。サーバーが起動すると、クラッシュして次のように表示されます。
info - socket.io started
debug - client authorized
info - handshake authorized DqN4t2YVP7NiqQi8zer9
debug - setting request GET /socket.io/1/websocket/DqN4t2YVP7NiqQi8zer9
debug - set heartbeat interval for client DqN4t2YVP7NiqQi8zer9
debug - client authorized for
debug - websocket writing 1::
buffer.js:287
pool = new SlowBuffer(Buffer.poolSize);
^
RangeError: Maximum call stack size exceeded
クライアント再接続(未接続時5秒毎に実行):
function socket_connect() {
if (!socket) {
socket = io.connect('http://192.168.1.25:8088', { 'reconnect':false, 'connect timeout': 5000 });
} else {
socket.socket.connect();
}
socket.on("connect", function () {
clearInterval(connect_interval);
connect_interval = 0;
socket.emit('player', { refresh_data:true });
});
}
サーバー側では、ソケット インスタンスのみでクラッシュします。
var io = require('socket.io').listen(8088);
問題は次のとおりだと思います。
サーバーが起動すると、クライアントによって発行されたすべての接続を 5 秒ごとに受信し (15 時間の切断 * 60 m * 60 秒 / 5 秒の再接続)、サーバーはクラッシュします。
サーバーが試みている接続を閉じるにはどうすればよいですか?
PS:クライアントをリロードし、サーバーを起動すると、動作します