2016-07-26 6 views
0

私はkoaを使用しています 何らかの条件が満たされたときに別のサーバにユーザの要求を送信し、サーバからの応答を得て、それをユーザに送信する方法サーバ。 私はhttp.requestを使用して、解像度を持って、今どのように私はパイプ例えばちょうど元のHTTPサーバのような、ユーザのソケットにRES、res.pipe(response)nodejs pipe koa resへのhttp応答

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(); 

はそれが動作しないことができる、私はドンそれをkoaの応答にパイプする方法を知っています

+0

アイデア: 'resolve(res)'で約束を返す関数で、http.requestをラップします。ルートから、 'ctx.body = yield makeRequest(...)'を試してください。あなたのコードに関する1つの問題は、リクエストコールバックが終了する前にkoaハンドラが返ることです。あなたはそれを待つ必要があります。 – danneu

+0

@danneu ok、知っていますが、https://github.com/koajs/koa/blob/master/lib/application.js#L227などのパイプをどうすれば使用できますか?ヘッダー – suconghou

答えて

-1

requestライブラリサポートストリームは、以下のように使用できます。

let request = require('request'); 

function *mid() { 
    let options = { 
     host: "blog.suconghou.cn", 
     port: 80, 
     encoding: null, 
     path: "http://blog.suconghou.cn", 
     headers: { 
      Host: "blog.suconghou.cn" 
     } 
    }; 

    this.req.pipe(request(options)) 
      .pipe(this); 
      .once('error', console.log); 
} 
関連する問題