Я знаю, что Node не блокирует, но я просто понял, что поведение по умолчанию http.listen(8000)
означает, что все HTTP-запросы обрабатываются один раз в то время. Я знаю, что я не должен был удивляться этому (это то, как работают порты), но это заставляет меня серьезно задаться вопросом, как написать мой код, чтобы я мог обрабатывать несколько параллельных HTTP-запросов.
Итак, что лучший способ написать сервер, чтобы он не отображал порт 80 и длительные ответы, не приводит к длительным очередям запросов?
Чтобы проиллюстрировать эту проблему, попробуйте запустить код ниже и загрузить его на две вкладки браузера одновременно.
var http = require('http');
http.createServer(function (req, res) {
res.setHeader('Content-Type', 'text/html; charset=utf-8');
res.write("<p>" + new Date().toString() + ": starting response");
setTimeout(function () {
res.write("<p>" + new Date().toString() + ": completing response and closing connection</p>");
res.end();
}, 4000);
}).listen(8080);