2011-03-20 53 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

相关问题