gpt4 book ai didi

node.js - 如何在不使用node.js中的http模块的情况下发送http响应?

转载 作者:太空宇宙 更新时间:2023-11-04 01:16:05 27 4
gpt4 key购买 nike

我需要在node.js 中实现一个HTTP 服务器而不使用http 模块。多有趣啊!我在发送响应套接字时遇到问题。

我正在尝试获取文件,因此我的代码如下所示:

fileStream = fs.createReadStream('example.jpg');
fileStream.on("end", function (close) {
var str = "HTTP/1.1 200 OK\r\Content-Type: image/jpeg\r\n" //and some more headers.
socket.write(str);
socket.pipe(fileStream);
socket.end("\r\n");
});

我错过了什么?

我当然也使用 net 模块来获取套接字和文件系统。

最佳答案

您的代码有两个主要问题。

  • 响应的格式为 header ,后跟两组“\r\n”,然后是内容。 end() 调用中的“\r\n”应该位于 str 中。您还缺少第一个“\r\n”中的“n”。
  • 您正在尝试通过管道传送 readstream 的内容,这很棒,但是您是在 steam 的 end() 内部执行所有这些操作,因此管道没有剩余可发送的内容,因为数据已全部发出。

尝试这样的事情。创建读取流,发送响应并通过管道传输,然后休息。

var str = "HTTP/1.1 200 OK\r\nContent-Type: image/jpeg\r\n\r\n";
socket.write(str);
var fileStream = fs.createReadStream('example.jpg');
fileStream.pipe(socket);

关于node.js - 如何在不使用node.js中的http模块的情况下发送http响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8455966/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com