Как да предавате поток за отговор в 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({ method: *, path: /api/results/{date}, handler: (req, reply) =› { var fs = require('fs'); var fileStream = fs.createWriteStream('./ doron'); request('google.com/doodle.png').pipe( fileStream); отговор (fileStream); } }); това хвърля следното изключение Отстраняване на грешки: вътрешна, реализация, грешка Грешка: Потокът трябва да има четим интерфейс за streams2   -  person doron aviguy    schedule 30.06.2015
comment
Това видях, поради което казах, че не мисля, че модулът за заявки поддържа streams2. Можете да опитате npmjs.com/package/wreck, но не съм сигурен дали това ще успее работа или.   -  person Clarkie    schedule 01.07.2015
comment
добре, ще разгледам wreck, проблемът ми сега е, че модулът за заявки не поддържа 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 Благодаря, прав си. събитието 'response' е [http.Incomming] (http://nodejs.org/api/http.html#http_http_incomingmessage), който е поток обект Цитат от http модул Документи 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