I did some experiment with node earlier
The following code outputs "aaa" to console, and the browser keeps waiting for response, as expected.
var http = require("http");
http.createServer(function (req, res) {
//res.writeHead(200);
console.log("aaa");
//res.end("hello");
//console.log("test111");
//res.end("bye");
}).listen(5555);
Output:
aaa
But, as soon as I un-comment the first res.end, node writes "aaa" to the console twice on one request!
var http = require("http");
http.createServer(function (req, res) {
res.writeHead(200);
console.log("aaa");
res.end("hello");
//console.log("test111");
//res.end("bye");
}).listen(5555);
Output:
aaa
aaa
Finally, when I un-comment everything,
var http = require("http");
http.createServer(function (req, res) {
res.writeHead(200);
console.log("aaa");
res.end("hello");
console.log("test111");
res.end("bye");
}).listen(5555);
Output:
aaa
test111
aaa
test111
Any idea why the console.log statements are executed twice per single request?
In the first example, the browser doesn't get a reply and stops there.
In the second example, the browser does get a reply, and then goes on to request the favicon which is a second request.
Try to also log the request url:
var http = require("http");
http.createServer(function (req, res) {
console.log("aaa", req.url);
res.end("bye");
}).listen(5555);
and you'll see the server going:
aaa /
aaa /favicon.ico
This has the answer you're looking for:
NodeJS server incrementing variable by two for every request
It is hitting / and /favicon.ico.