【问题标题】:Node.js sending binary data of HTTP over a socketNode.js 通过套接字发送 HTTP 的二进制数据
【发布时间】:2011-12-21 21:20:11
【问题描述】:

我正在编写自己的 http 模块(我知道 node.js 包含一个) 我正在使用网络模块 当我收到对静态二进制(图片)文件的请求时,如何使用二进制文件生成 HTTP 响应? 当我对文本文件(例如 html 文件)执行此操作时,它就可以工作了..

【问题讨论】:

  • 我能问你为什么要自己写吗?您需要为 HTTP 请求编写解析器,然后确保您的响应具有正确的标头。你能发布你的代码吗?当您请求图像时,究竟是什么失败了?您如何发送测试请求?
  • 这是为了学习目的...我写了一个 HTTP/1.1 解析器,当我发送 html 文件时它可以工作,当我发送图像时它不显示..(我发送正确的内容类型)

标签: http node.js


【解决方案1】:

如果您使用的是 net 模块,您可能正在使用如下代码:

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

什么是套接字?它代表网络上的数据流。 在对象中,Socket 是一个 WriteableStream,在此处阅读更多内容:http://nodejs.org/docs/v0.6.5/api/streams.html

当您读取文件时,您可以将内容作为 String、Buffer 或 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);

【讨论】:

    猜你喜欢
    • 2012-01-02
    • 1970-01-01
    • 2012-08-23
    • 2013-08-21
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    相关资源
    最近更新 更多