2011-12-06 102 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);