我期待着寫一個建立在node-http-proxy之上的NPM模塊,但增加了緩存支持,比如魷魚/清漆,但是在node.js中。在發送到瀏覽器之前過濾node.js響應(標題和正文)?
在我的頭,它的工作是這樣的:
- 我的NPM模塊將不依賴於HTTP代理,以將只是「打包」提供給
http.createServer
任何回調。這個想法是你將它與http-proxy結合起來,但它並不假設。 - 它會查看
req
,如果它有一個緩存版本,它將提供該服務。 - 如果沒有,它將委託給原始回調,檢查響應以查看它是否可以被緩存。
- 緩存發生,並返回實際響應。
這個邏輯非常直截了當,但我對node.js內部和概念不是很熟悉,而且我很努力想弄清楚如何獲取響應的內容。
考慮這個例子:
var http = require('http');
http.createServer(function(req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' })
res.write('Hello World!');
res.end();
}).listen(80);
如何我會從響應對象獲取的數據?理想情況下,我只是'觀察'響應並處理寫入數據的數據,而不是回溯地將數據從數據中取出。
我試着這樣做:
res.on('data', function(chunk) {
console.log('Data written: ' + chunk);
});
但似乎永遠不會被調用。
我然後設法:
res.connection.on('data', function(chunk) {
console.log('Data written: ' + chunk);
});
但是,這只是把請求數據,不響應數據。如果您對響應的產生方式一無所知,那麼過濾響應數據的正確方法是什麼?
如果我表達我完全不理解節點,並且應該閱讀某種「Node.js概念的新手指南」,請直接告訴我這一點。我不是懶惰,我只是迷失了。
編輯|看起來我可以在方法上調用write()
和writeHead()
來攔截對它們的調用,但是這種感覺是錯誤的。
現在玩這個方法,謝謝。它不會像我想的那樣混亂。 – d11wtq 2012-08-14 13:32:56