NodeJS服务器执行两次?

时间:2014-09-18 16:32:33

标签: node.js

我尝试使用以下代码开发基本的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 基本上每次调用(页面刷新)服务器执行两次,为什么?这是每次调用时运行的线程数?

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);你知道吗。