2011-03-20 41 views
1

這是我的第一個節點應用程序。我簡直就是開始通過API來了解它的全部內容。我立即被以下服務器代碼和控制檯輸出所困惑。有人可以解釋爲什麼我的console.log在瀏覽器刷新上發生3次?從瀏覽器中的單次刷新Node.js - 爲什麼我的回調會爲每個請求調用3次?

var http = require('http'); 

http.createServer(function(request, response){ 
    response.writeHead(200, {'Content-Type': 'application/json'}); 
    response.end("{blah: 1234}"); 
    console.log("Hello!"); 
}).listen(3000, '127.0.0.1'); 

輸出是:

Hello! 
Hello! 
Hello! 

我缺少什麼?

OSX 10.5,節點0.4.3

+2

一個'tcpdump -s 0 -X'或者等價物會很好,但是我猜想:HEAD,GET,GET /favicon.png – ninjalj 2011-03-20 16:38:49

+0

另外,很好用原始節點http apis來學習(然後連接)但在此之後,簽出expressjs創建一個真正的網絡應用程序:) – bryanmac 2013-07-06 12:47:33

回答

4

最有可能您的瀏覽器實際發送這些請求。

console.log("Hello!")更改爲console.log(request.url)以查看這些請求的路徑是什麼。

使用Chrome我只得到兩個請求,一個用於/,另一個用於/favicon.ico

+0

良好的通話,我沒有考慮到其他請求是由瀏覽器,favicon.ico等自動做出的......真奇怪的是,我得到兩個請求favicon與safari?無論如何,除了這一點,謝謝你的答案! – brad 2011-03-20 19:32:14

+0

您可以使用連接中間件來爲這些收藏夾圖標提供服務。 http://senchalabs.github.com/connect/middleware-favicon.html – masylum 2011-03-20 23:45:14

+0

使用像curl這樣的命令行HTTP代理來執行一個特定請求,例如:「curl http:// localhost:3000/-o - 」,this做一個請求並將輸出轉儲到STDOUT – 2011-03-21 23:04:03

相關問題