统计节点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(); });