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

时间:2011-12-10 10:49:04

标签: node.js fs

我需要在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。

1 个答案:

答案 0 :(得分:1)

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

  • 响应格式为标题,后跟两组“\ r \ n”,然后是内容。您的end()调用中的“\ r \ n”应位于str中。你也错过了第一个“\ r \ n”中的'n'。
  • 你试图管道读取流的内容,这很好,但是你在steam的end()里面做了所有这些,所以管道就像没有任何东西要发送,因为数据都已经发出了。 / LI>

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

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);