2015-06-30 11 views
7

Im Suche nach der parllel Methode in hapiWie Rohrstrom antworten in hapi.js

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

Wie Rohr eine Antwort in hapi?

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


    //????reply(?); 



} 
}); 
+0

Ich bin mir nicht sicher, ob Sie können. Unterstützt Anfrage die Streams2 API? Aus der Hapi-Dokumentation: 'Stream-Objekt (Hinweis - jedes Stream-Objekt muss kompatibel sein mit der" Streams2 "API und nicht in objectMode)' http://hapijs.com/api#reply-interface – Clarkie

+0

Ich habe es mit gemacht das Modul aws-sdk: 'reply (s3.getObject (params) .createReadStream());' – Clarkie

+0

server.route ({ \t methode: "*", \t pfad: "/ api/ergebnisse/{date}" , \t Handler: (req, antworten) => { \t \t var fs = require ('fs'); \t \t var filestream = fs.createWriteStream (‘./ Doron '); \t \t Anfrage (' http : //google.com/doodle.png ') .pipe (fileStream); \t \t \t Antwort (DateiStream); \t \t} }); dies wirft die folgende Ausnahme Debug: intern, Implementierung, Fehler Fehler: Stream muss eine Streams2 lesbare Schnittstelle haben –

Antwort

6

Aus einer anderen Frage/Antwort:

function (request, reply) { 

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

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

+2

Diese nicht verwendet die Leistung in Streams. Streams sind einfache .on ('Daten', ... Listener, die Ereignisse bei jedem Datenereignis aussenden. Die von Ihnen geposteten Antworten hören grundsätzlich auf das Endereignis. –

+1

@doronaviguy Sie haben sich geirrt. Die Antwort ist ein Stream und das Ereignis ist sofort gesendet, nachdem die Header verarbeitet wurden – Gil

+1

@Gil Danke, Sie haben Recht. "Antwort" -Ereignis ist [http.Incomming] (http://nodejs.org/api/http.html#http_http_incomingmessage) was ein Stream-Objekt ist Zitat von HTTP-Modul Docs http.Incomming ** Es implementiert die Readable Stream-Schnittstelle ** –

3

Wenn Sie nur eine Upstream-Antwort weiterleiten müssen, können Sie einfach einen Proxy-Handler über das h2o2 Plugin verwenden:

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