2011-10-26 17 views
12

Quando viene eseguito questo codice, i viene incrementato di due ogni volta e non è possibile individuare nella documentazione o altrimenti perché ciò si verificherà. Mi aspetto che l'incremento sia di uno per ogni richiesta, ma non lo è. Perché questo si comporta come è?Variabile incrementale del server NodeJS di due per ogni richiesta

var http = require('http'); 
var i = 0; 
http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Number: ' + i + '\n'); 
    i++; 
}).listen(8000, '127.0.0.1'); 
+0

Giusto per confermare, stai utilizzando Chrome? Hai provato un altro browser? Sospetto che non succeda in Firefox (per esempio), vedi il mio commento sulla risposta di Raynos. –

risposta

29

console.log(req.url);

si noterà l'URL sono / e /favicon.ico

Browser come fare le richieste di favicon.ico per voi. Ecco perché ricevi 2 richieste.

+0

Questo è probabilmente a causa di un bug in Chrome, vedi questa risposta: http://stackoverflow.com/questions/4761913/server-socket-receives-2-http-requests-when-i-send-from-chrome-and -receives-one/4941800 # 4941800 –

+0

@LukeGirvin Yup, Chrome. Solo incrementi di due alla prima occasione e ogni volta dopo si tratta di un singolo incremento. Non pensavo al problema dei favicon. – Matty

+0

Oh, ho notato anche questo problema quando sono entrato in Node.js. Grazie per la risposta Raynos! –

Problemi correlati