2012-06-25 159 views
3

我正在編寫一個相當複雜的多節點代理,並且一次需要處理HTTP請求,但是在「http.Server」回調之外讀取該請求(我需要從請求數據中讀取數據,並在不同的時間使用不同的響應進行排列)。問題是,流不再可讀。下面是一些簡單的代碼來重現問題。這是正常的,還是一個錯誤?HTTP請求流在請求處理程序外不可讀

function startServer() { 
    http.Server(function (req, res) { 
     req.pause(); 

     checkRequestReadable(req); 

     setTimeout(function() { 
     checkRequestReadable(req); 
     }, 1000); 

     setTimeout(function() { 
     res.end(); 
     }, 1100); 
    }).listen(1337); 
    console.log('Server running on port 1337'); 
} 

function checkRequestReadable(req) { 
    //The request is not readable here! 
    console.log('Request writable? ' + req.readable); 
} 

startServer(); 
+0

我想補充的是,req.on(「數據」)的工作,但最終,我想req.pipe(...在請求處理程序以外工作 –

+1

如果有人知道這裏發生了什麼,我很想更好地理解爲什麼這不起作用,我覺得我錯過了一些東西 – outside2344

回答

2

這項工作起始於0.8.0。我沒有0.6.11+

+1

這不在0.8.2中爲我工作:(同樣的問題 - 感覺我在Node.js中錯過了一些架構上的東西。然後再次,它們在0.10中改變了所有這些,所以也許不會。 – outside2344

2

它在v0.8.22工作嘗試

server$ node http_test.js 
Server running on port 1337 
Request writable? true 
Request writable? true 
Request writable? true 
Request writable? true 
^Cserver$ node -v 
v0.8.22 
server$