为什么数据事件不能在http.get响应流上工作

时间:2014-11-25 08:03:29

标签: node.js stream

在nodejs中处理图像时,我遇到了data事件无法使用管道响应流的问题。

var http = require('http'),
    url = require('url');
var httpServer = http.createServer(function(req,res){
        var path = url.parse(req.url).pathname;
        var fstream = $.FS.createReadStream('/root/image'+path);
        fstream.on('error',function(){
            res.writeHead(404);
            return res.end();
        });
        fstream.pipe(res);
});
httpServer.listen(8080);
http.get({
      host : '127.0.0.1',
      port : 8080,
      path : '/image.jpg'
},function(res){
      res.on('data',function(){
           console.log('data received'); //nothing happened
      });
}).on('error',function(er){
      throw er;
});

我做错了什么吗?或者这是一个节点错误吗?

1 个答案:

答案 0 :(得分:0)

在我的测试中,如果响应的状态为304(未修改),则不会触发data事件。如果您不害怕终端(或Windows中的命令行),解决方案相当容易。打开命令工具并cd到包含图像的目录。在那里,您可以使用以下命令使您的文件更新(将filename.ext替换为您的文件名称):

在Unix / Linux

touch filename.ext

copy /b filename.ext +,,

要重新运行该命令,请按向上箭头,然后按输入