2016-07-26 13 views
0

Ich benutze koa, Wie kann ich Benutzeranforderung an einen anderen Server senden, wenn einige Bedingung erfüllen, dann bekam die Antwort vom Server und senden Sie es an den Benutzer, als ob ich ein Proxy bin Server. Ich verwende die http.request und bekam die res jetzt, wie kann ich Rohr der res an die Buchse des Benutzers, wie ein Original-HTTP-Server res.pipe(response)nodejs pipe http Antwort auf Koa Res

Zum Beispiel

var options = { 
     host: "blog.suconghou.cn", 
     port: 80, 
     encoding: null, 
     path: "http://blog.suconghou.cn", 
     headers: { 
     Host: "blog.suconghou.cn" 
     } 
    }; 

    http.request(options, function(res) 
    { 
     res.pipe(process.stdout); 
     console.log(res.body,typeof res); 
     ctx.body=res; // ctx is this in app.use 
    }).end(); 

es nicht arbeiten, ich don weiß nicht, wie man es an die Antwort der koa Pipe

+0

Idee: wrap http.request in einer Funktion, die eine Zusage mit 'resolve (res)' zurückgibt. Versuchen Sie es mit der Route 'ctx.body = yield makeRequest (...)'. Ein Problem mit Ihrem Code ist, dass Ihr Koa-Handler zurückkehrt, bevor der Rückruf der Anfrage beendet ist. Sie müssen darauf warten. – danneu

+0

@danneu ok, ich weiß, aber wie kann ich das Rohr wie https://github.com/koajs/koa/blob/master/lib/application.js#L227 verwenden, so dass ich nicht viel tun muss die Header – suconghou

Antwort

-1

request Bibliothek unterstützen Streams, mit ihm können Sie tun, wie folgt.