【问题标题】:How to pipe stream to reply in hapi.js如何通过管道流以在 hapi.js 中回复
【发布时间】:2016-03-30 20:44:24
【问题描述】:

我正在寻找hapi中的并行方法

// Express + Request exmaple
function(req, res){
  request('http://example.com/image.png').pipe(res);
}

如何在 hapi 中传递响应?

server.route({
method:  "*",
path:    "/api/results/{date}",
handler: (request, reply) => {


    //????reply(?);



}
});  

【问题讨论】:

  • 我不确定你是否可以。请求是否支持streams2 api?来自 hapi 文档:Stream object (Note - any Stream object must be compatible with the "streams2" API and not be in objectMode)hapijs.com/api#reply-interface
  • 我已经用 aws-sdk 模块完成了:reply(s3.getObject(params).createReadStream());
  • server.route({ method: "*", path: "/api/results/{date}", handler: (req, reply) => { var fs = require('fs' ); var fileStream = fs.createWriteStream('./doron'); request('google.com/doodle.png').pipe(fileStream); reply(fileStream); } }); 这会引发以下异常 Debug: internal, implementation, error Error: Stream must have a Streams2 可读接口
  • 这就是我所看到的,这就是为什么我说我认为请求模块不支持streams2。您可以尝试npmjs.com/package/wreck,但我不确定这是否也有效。
  • 好的,我会调查 wreck ,我现在的问题是 request 模块不支持 stream2 。我的观点是 hapi 应该支持并鼓励人们使用流。经过我所有的调查,我发现没有足够的文档,关于 hapi 中的流支持。

标签: javascript node.js stream hapijs


【解决方案1】:

来自另一个问题/答案:

function (request, reply) {

    Request('http://example.com/image.png')
    .on('response', function (response) {
        reply(response);
     });
}

https://stackoverflow.com/a/31222563/2573244

【讨论】:

  • 这些不使用流中的力量。流很简单 .on('data' , ... listeners 会在每个 data 事件上发出事件。你发布的 asnwer 基本上是在监听 end 事件
  • @doronaviguy 你错了。响应是一个流,在处理完标头后立即发出事件。
  • @Gil 谢谢,你是对的。 'response' 事件是 [http.Incomming] (nodejs.org/api/http.html#http_http_incomingmessage) 这是一个流对象 引用来自 http 模块 Docs http.Incomming 它实现了可读流接口
【解决方案2】:

如果您只需要转发上游响应,您可以通过 h2o2 插件使用代理处理程序:

server.route({
    method: 'GET',
    path: '/upstream/file',
    handler: {
        proxy: {
            uri: 'http://example.com/image.png'
        }
    }
});

【讨论】:

  • 那个方法处理流响应?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多