2015-06-30 18 views
7

Im che cerca il metodo parllel in hapiCome tubo di flusso a rispondere per hapi.js

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

Come tubo di una risposta in Hapi?

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


    //????reply(?); 



} 
}); 
+0

Non sono sicuro che sia possibile. Richiede supporto per gli stream2 api? Dalla documentazione di hapi: 'Oggetto stream (Nota: qualsiasi oggetto Stream deve essere compatibile con l'API" streams2 "e non essere in objectMode)' http://hapijs.com/api#reply-interface – Clarkie

+0

L'ho fatto con il modulo aws-sdk: 'reply (s3.getObject (params) .createReadStream());' – Clarkie

+0

server.route ({ \t metodo: "*", \t percorso: "/ api/results/{date}" , \t gestore: (req, rispondere) => { \t \t var fs = richiedono ('FS'); \t \t var = FILESTREAM fs.createWriteStream (' Doron ./ '); \t \t richiesta (' http : //google.com/doodle.png ') .pipe (fileStream); \t \t \t risposta (fileStream); \t \t} }); questo lancia l'eccezione seguente Debug: internal, implementation, error Errore: Stream deve avere un'interfaccia leggibile streams2 –

risposta

6

Da un'altra domanda/risposta:

function (request, reply) { 

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

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

+2

Questi doesnt, utilizza la potenza nei flussi. i flussi sono semplici .on ('dati', ... ascoltatori che emettono eventi su ogni evento di dati. l'utente che ha postato sta ascoltando basicamente l'evento di fine –

+1

@doronaviguy Si sbaglia. La risposta è un flusso e l'evento è emesso immediatamente dopo l'elaborazione delle intestazioni. – Gil

+1

@Gil Grazie, hai ragione. L'evento 'risposta' è [http.Incomming] (http://nodejs.org/api/http.html#http_http_incomingmessage) che è un oggetto flusso Citazione dal modulo http http. Doc. Http: // ** Implementa l'interfaccia Stream leggibile ** –

3

Se avete solo bisogno di inoltrare una risposta a monte, si può semplicemente utilizzare un gestore di proxy tramite il plugin H2O2:

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