2011-11-25 136 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