2014-05-17 114 views
0

我今天安裝了node.js。我從例子「Hello World」服務器開始,並開始對它進行黑客攻擊。沒過多久,我有這樣的:爲什麼CreateServer函數處理程序被調用兩次?

var http = require('http'); 
var count = 0; 
http.createServer(function handler(req, res) { 
    console.log('yeah ' + count++); 
    res.writeHead(200, {'Content-Type': 'text/html'}); 
    res.end('<b>Zoot!</b><br><em>yeah</em>\n'); 
}).listen(1338, '127.0.0.1'); 
console.log('Server running at http://127.0.0.1:1338/'); 

當我瀏覽到該端口,我的控制檯日誌顯示在CreateServer處理程序被調用兩次 - 我增加了計數,所以我可以肯定。 2'瀏覽'後:

Server running at http://127.0.0.1:1338/ 
yeah 0 
yeah 1 
yeah 2 
yeah 3 

爲什麼會發生這種情況?

編輯

蒂姆庫珀是正確的。

我更改的日誌記錄行

console.log('yeah ' + req.url +' '+ count++); 

,得到了這樣的結果

Server running at http://127.0.0.1:1338/ 
yeah/0 
yeah /favicon.ico 1 
yeah/2 
yeah /favicon.ico 3 
+4

您的瀏覽器很可能從服務器以及HTML頁面請求'/ favicon.ico'。 –

+0

好吧,我會開始尋找。謝謝! 更多來。 –

+0

好的,這很容易。謝謝@TimCooper。將您的評論發佈爲答案。 –

回答

1

CreateServer不獲取調用兩次。您的回調被多次調用(每次向服務器發送http請求一次)。

+0

好的區別,謝謝。社區不應該忽視這樣的小點可以真正幫助初學者理解。 –

相關問題