2013-08-19 56 views
2

我有一個Node.jshttp服務器有時用作代理服務器端代碼的一些不同的語言編寫的代碼。node.js直接寫入底層http

所以有時(但並非總是)http請求將通過套接字傳遞給服務器應用程序。來自應用程序的響應已經包含了http頭文件。

問題是,我想簡單地將應用程序響應寫入http響應流,而不必擔心分別寫入標題和內容。

我可以使用網絡套接字來實現整個http服務器,但是我想最終實現一個節點http框架作爲前端。

使用http模塊,是否有直接寫入底層響應套接字的方法?

+0

我不確定這是否會有所幫助 - 但也許看看socket.io/engine.io如何處理「升級」請求可能是一個好的開始?請參閱:[engine.io.js](https://github.com/LearnBoost/engine.io/blob/433aa787b3ed64a3bc23bec6f4904f4fb567ec9f/lib/engine.io.js) – dc5

+0

反向HTTP代理是處理此問題的最合適方法 - - [http-proxy](https://github.com/nodejitsu/node-http-proxy)正是你正在尋找的。 – josh3736

回答

3

當請求進入時,您應該能夠訪問請求的connection屬性。

var http = require('http'); 
http.createServer(function (req, res) { 

    req.connection.write(/* your data here */); 

}).listen(1337, '127.0.0.1'); 
console.log('Server running at http://127.0.0.1:1337/'); 

請注意,如果您這樣做,您還負責完成時關閉連接。 您也可以將兩個流一起管道。

+0

完成寫入後,請務必調用req.connection.end()來發送響應:-) – Chandu

+0

@Chandu,好點,但不要在'req'上調用'end()',在代碼中將發送標題,而不是。 – Brad