2011-11-25 61 views
1

我对node.js很感兴趣,我花了几个小时阅读和观看视频。我没有写那么多代码,但我对几行字我写了一个意外的行为:如何在node.js中以非阻塞方式建立连接?

var http = require('http'); 
http.createServer(function (req, res) { 
     res.writeHead(200, {'Content-Type': 'text/plain'}); 
     res.write('Wait some seconds please<br/>'); 

     setTimeout(function() { 
     res.end("I'm done"); 
     }, 10 * 1000); 
}).listen(1337, "127.0.0.1"); 
console.log('Server running at http://127.0.0.1:1337/'); 

当有传入的请求的代码应该是:在输出第一

  1. 写行
  2. 请求节点在十秒后调用一个函数,然后让浏览器等待
  3. 写第二行并返回。

因此,我假设如果我在第一个请求挂起时用其他浏览器调用服务器,我会得到一个与第一个请求并行的新请求。

但服务器没有响应,然后第二个浏览器只是等到第一个请求完成从服务器获取其内容。然后我假定setTimeout被阻塞。我怎样才能达到上面描述的目标。

+0

可能的重复[Node.js与response.write问题](http://stackoverflow.com/questions/6068820/node-js-problems-with-response-write) – pimvdb

+1

您的代码似乎遭受同样的问题作为这个问题 - 无论你是否以大块的形式得到响应,它都是浏览器特定的。 – pimvdb

+0

我看到写的数据,我很确定我写的Firefox的等待动画项目是不一样的,当试图连接,并在等待服务器的答案 – AsTeR

回答

0

你的问题是浏览器对cuncurrent请求的数量有限制。你可以试着用一个来自IE的请求和一个来自Firefox的请求来做同样的事情,我相信它会起作用。我相信这不是一个nodejs问题。

+0

好吧,我的代码我正确的,这是Firefox阻止多个请求发送到相同的资源。谢谢 ! – AsTeR