私は次のコードを持っています:
var schedules = io.on('connection', function(client) {
var schJSON = JSON.parse(fs.readFileSync(__dirname +'huge_file.json', 'utf8'));
client.json.send(schJSON);
});
readFileSync
ブロッキング呼び出しであるため、1つのクライアントの要求がサーバーによって処理されている間、他のクライアントがキューに入れられると考えました。したがって、ファイルの読み取りに約10秒かかり、サーバーへの3つの異なる接続を開始した場合、3番目の接続は応答を取得するのに約30秒かかります。
実際には、3つのクライアントすべてがほぼ同時に応答を受け取ります(10秒が経過した後)。3つの要求は、(同じ外部IPアドレスを持つ)3つの異なるマシンから発生しました。
これはどのように可能ですか?