繁体   English   中英

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

[英]How to send a http response without using http module in node.js?

我需要在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模块来获取套接字和fs。

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

  • 响应的格式为标头,后跟两组“ \\ 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM