Я создаю приложение Node.js и хотел понять, как обрабатываются параллельные запросы.
Я создаю тестовый сервер, где высокая нагрузка на ЦПУ моделируется ожиданием 10 секунд. Чтобы проверить поведение, я открываю две вкладки браузера и одновременно обновляю страницу.
const http = require('http');
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const server = require('http').createServer(app);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.get('*', function (req, res, next) {
var requestTime = new Date().getTime(),
executionTime;
doHeavyWork(requestTime, function(error){
res.send({
requestTime : requestTime,
executionTime : executionTime
});
});
});
function doHeavyWork (requestTime, callback) {
var sleepSeconds = 10;
while (requestTime + sleepSeconds*1000 >= new Date().getTime()) {}
callback(null);
}
server.listen(1337, '127.0.0.1');
Из того, что я слышал о Node.js, я ожидал, что обе вкладки завершат загрузку в одно и то же время. В действительности вкладка, которая обновляется первой, также заканчивается первой. Следующая вкладка загружается через дополнительные 10 секунд. Таким образом, сервер обрабатывает запросы по одному, а не обрабатывает их одновременно. Что мне здесь не хватает?