The following is the example web server from the documentation, with an added counter. It prints the counter to the console whenever a client/browser requests the page.
However, it's being called twice when requested by the browser. Why?
This is what I would expect would happen:
browser : Hello World 1
console : Counter 1
[reload page]
browser : Hello World 2
console : Counter 2
but this happens:
browser : Hello World 1
console : Counter 1
Counter 2
[reload page]
browser : Hello World 3
console : Counter 3
Counter 4
I run the code using the command line
$ node example.js
Here is the code:
var
http = require('http'),
counter = 0,
sys = require('util');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
counter++;
res.end('Hello World ' + counter + '\n');
sys.puts('Counter ' + counter);
}).listen(8000, "");
In programming, when stuck, it's always handy to trace the code to better understand what's happening. The easiest way to do this is to put more debug/print statements in till you can see what's going on.
Change the sys.puts line to:
sys.puts('Counter ' + counter + " from " + req.url);
I think you'll find that the 2nd request is the browser requesting the favicon for the site.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With