Как передать поток для ответа в hapi.js

Я ищу параллельный метод в 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(?);



}
});  

person doron aviguy    schedule 30.06.2015    source источник
comment
Я не уверен, сможешь ли ты. Поддерживает ли запрос API streams2? Из документов hapi: Stream object (Note - any Stream object must be compatible with the "streams2" API and not be in objectMode) hapijs.com/api#reply-interface   -  person Clarkie    schedule 30.06.2015
comment
Я сделал это с помощью модуля aws-sdk: reply(s3.getObject(params).createReadStream());   -  person Clarkie    schedule 30.06.2015
comment
server.route({ метод: *, путь: /api/results/{date}, обработчик: (req, response) => { var fs = require('fs'); var fileStream = fs.createWriteStream('./ doron'); request('google.com/doodle.png').pipe( файловый поток); ответ (файловый поток); } }); это вызывает следующее исключение Отладка: внутренняя, реализация, ошибка Ошибка: поток должен иметь читаемый интерфейс streams2   -  person doron aviguy    schedule 30.06.2015
comment
Это то, что я видел, поэтому я сказал, что не думаю, что модуль запроса поддерживает streams2. Вы можете попробовать npmjs.com/package/wreck, но я не уверен, что это поможет. работать либо.   -  person Clarkie    schedule 01.07.2015
comment
хорошо, я посмотрю на крушение, моя проблема сейчас в том, что модуль запроса не поддерживает streams2. Я считаю, что hapi должен поддерживать и поощрять людей использовать потоки. после всех моих исследований я обнаружил, что недостаточно документов о поддержке потоков в hapi.   -  person doron aviguy    schedule 05.07.2015


Ответы (2)


Из другого вопроса/ответа:

function (request, reply) {

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

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

person Clarkie    schedule 05.07.2015
comment
Это не использует мощность в потоках. потоки просты .on('data',... слушатели, которые генерируют события для каждого события данных. Ответ, который вы опубликовали, в основном прослушивает конечное событие - person doron aviguy; 05.07.2015
comment
@doronaviguy Вы ошибаетесь. Ответ представляет собой поток, и событие генерируется сразу после обработки заголовков. - person Gil; 13.08.2015
comment
@Gil Спасибо, ты прав. Событие «ответ» — [http.Incomming] (http://nodejs.org/api/http.html#http_http_incomingmessage), который является объектом потока. Цитата из модуля http Docs http.Incomming Он реализует интерфейс Readable Stream - person doron aviguy; 14.08.2015

Если вам нужно только перенаправить исходящий ответ, вы можете просто использовать обработчик прокси через плагин h2o2:

server.route({
    method: 'GET',
    path: '/upstream/file',
    handler: {
        proxy: {
            uri: 'http://example.com/image.png'
        }
    }
});
person Gil    schedule 13.08.2015
comment
эти методы обрабатывают ответ потока? - person pery mimon; 23.12.2019