为什么CreateServer函数处理程序被调用两次?

时间:2014-05-17 17:08:33

标签: node.js

我今天安装了node.js.我开始使用示例" Hello World"服务器并开始黑客攻击它。不久,我有了这个:

var http = require('http');
var count = 0;
http.createServer(function handler(req, res) {
    console.log('yeah ' + count++);
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.end('<b>Zoot!</b><br><em>yeah</em>\n');
}).listen(1338, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1338/');

当我浏览到端口时,我的控制台日志显示CreateServer中的处理程序被调用两次 - 我添加了计数,所以我可以肯定。在2&#39;浏览后

Server running at http://127.0.0.1:1338/
yeah 0
yeah 1
yeah 2
yeah 3

为什么会这样?

修改

蒂姆库珀是对的。

我将记录行更改为

console.log('yeah ' + req.url +' '+ count++);

并得到了这个结果

Server running at http://127.0.0.1:1338/
yeah / 0
yeah /favicon.ico 1
yeah / 2
yeah /favicon.ico 3

1 个答案:

答案 0 :(得分:1)

CreateServer没有被调用两次。您的回调被多次调用(每次http请求一次到服务器)。