我知道Node是非阻塞的,但我刚刚意识到
那么,编写服务器的最佳方法是什么,以便它不会占用80端口,而长时间运行的响应不会导致长请求队列?
为了说明问题,请尝试运行下面的代码,并在两个浏览器标签中同时加载它。
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);