统计节点http服务器中的访问者

我的源代码:

var http = require("http"); var count=1; http.createServer(function(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hi, you are number "+count+" visitors"); response.end(); count++; }).listen(8888); 

我在每次访问中得到1,3,5,7 ….. 为什么要增加计数2?

favicon.ico的请求触发了一个额外的请求(我通过logging每个请求的细节,然后用Chrome进行正常的请求来确认这一点)。

你将需要明确的要求types(url,方法等),你想匹配。

另外,请记住,如果您的服务器死亡,它可能会在某个阶段,您的计数将被重置。 如果你不想要的话,你应该把它放在一个不太易变的地方,比如数据库。

如果你的服务器只是一个简单的计数器,并知道请求favicon.ico触发一个额外的请求,那么你可以简单地计数每一个请求一半,这将导致确切的访问次数。

 counter = counter + 0.5; 

您可以忽略对favicon.ico的请求:

 var server = http.createServer(function (req, res) { if(req.url === '/favicon.ico'){ console.log('favicon'); return; } userCount++; res.writeHead(200, { 'Content-Type': 'text/plain' }); res.write('Hello!\n'); res.write('We have had ' + userCount + ' visits!\n'); res.end(); });