2011-12-06 142 views
4

我寫我自己的HTTP模塊發送HTTP的二進制數據(我知道的node.js包括一個),我使用的是網模塊 時,我得到了一個靜態二進制的請求( 圖片)文件,如何使用二進制文件生成HTTP響應? 當我做到這些文本文件(如HTML文件),它只是工程..的Node.js通過套接字

+0

我可以問你爲什麼自己寫嗎?您需要爲HTTP請求編寫解析器,然後確保您的響應具有正確的標頭。你能發佈你的代碼嗎?請求圖像時究竟失敗了什麼?你如何發送測試請求? – loganfsmyth

+1

這是爲了學習目的...我寫了一個HTTP/1.1解析器,當我發送它的HTML文件的作品,當我發送圖像它不顯示..(我發送正確的內容類型) – ciochPep

回答

3

如果您使用的是網絡模塊,你可能正在使用一個代碼,例如:

var server = net.createServer(function (socket) { 
}); 

什麼是插座?它代表了網絡上的數據流。 在對象,Socket是一個WriteableStream,在這裏閱讀更多:http://nodejs.org/docs/v0.6.5/api/streams.html

當您閱讀文件,你就能得到上述內容爲字符串,緩衝區或作爲ReadableStream

讀取文件流的最簡單方法是通過使用函數:http://nodejs.org/docs/v0.6.5/api/fs.html#fs.createReadStream 例如

var fileAsAstream = fs.createReadStream(filePath); 

爲了二進制讀流的內容傳送到寫入數據流可以使用管功能http://nodejs.org/docs/v0.6.5/api/streams.html#stream.pipe功能 例如

fileAsAstream.pipe(socket);