【问题标题】:why data event not working on http.get response stream为什么数据事件在 http.get 响应流上不起作用
【发布时间】:2014-11-25 08:03:28
【问题描述】:

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

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

【问题讨论】:

    标签: node.js stream


    【解决方案1】:

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

    Unix/Linux

    touch filename.ext
    

    窗口

    copy /b filename.ext +,,
    

    要重新运行命令,请点击 向上箭头,然后点击 enter

    【讨论】:

      猜你喜欢
      • 2015-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-11
      • 2020-03-10
      • 1970-01-01
      相关资源
      最近更新 更多