我尝试使用以下代码开发基本的HTTP服务器:
var http = require("http");
http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}).listen(8888);
工作正常,页面返回: Hello World
之后我尝试了解NodeJS服务器中的无限循环并发现: 使用此代码时:
var http = require("http");
var n = 1;
http.createServer(function(request, response) {
n++;
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
console.log('call: %d', n);
response.end();
}).listen(8888);
并且工作正常页面返回: Hello World
但是看到日志我发现了一个奇怪的结果,当页面刷新时。 电话:2 电话:3 基本上每次调用(页面刷新)服务器执行两次,为什么?这是每次调用时运行的线程数?
答案 0 :(得分:5)
试试这样:
var http = require("http");
var n = 1;
http.createServer(function(request, response) {
if(request.url != '/favicon.ico')
{
n++;
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
console.log('call: %d', n);
response.end();
}
}).listen(8888);
答案 1 :(得分:1)
尝试添加console.log(request.url);
。我打赌浏览器也在检查favicon.ico
。
答案 2 :(得分:1)
不,不要执行2次。只执行一次。如果执行console.log(request.url);你知道吗。