如何发送一个http响应,而不使用node.js中的http模块?
我需要在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"); });
我错过了什么?
我当然使用净模块来获取套接字和FS。
你的代码有两个主要的问题。
- 响应格式为标题,后跟两组“\ r \ n”,然后是内容。 你的end()调用中的“\ r \ n”应该在
str
。 您还从第一个“\ r \ n”中错过了“n”。 - 你正在试图读取readstream的内容,这很棒,但是你正在做所有的这些内部的end(),所以pipe道什么都不需要发送,因为数据已经被发送了。
尝试这样的事情,而不是。 创build读取stream,发送响应和pipe道然后rest。
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);