0

リクエストをプロキシし、レスポンスをファイルに書き込む単純な node.js プログラムを作成しようとしています。プロキシを行うためにhttp-proxyを使用しています。応答をファイル (またはテスト用の process.stdout) にパイプしようとすると、空/ゼロバイトになります。理由はわかりませんが、応答がクライアントに返されてからストリームが閉じられたことが原因である可能性があります。

どうすればこれを機能させることができますか?

var httpProxy = require('http-proxy');
var fs = require('fs');

var server = httpProxy.createServer(function (req, res, proxy) {
  proxy.proxyRequest(req, res, {
    host: 'localhost',
    port: 80
  });
});

server.proxy.on('end', function (response) {
  response.pipe(process.stdout); // NOTHING IS WRITTEN TO THE STDOUT
});

server.listen(8000);
4

1 に答える 1

2

次のようなものを試してください

  var http = require('http'),
  httpProxy = require('http-proxy');
  var proxy = new httpProxy.RoutingProxy();
  http.createServer(function (req, res) {
    var _write = res.write;
    res.write = function(data){
      process.stdout.write(data); // here we get all incoming data
      _write.apply(this, arguments);
    }
    proxy.proxyRequest(req, res, {
      host: 'localhost',
      port: 80  
    });
  }).listen(8000);
于 2013-10-08T08:01:41.067 に答える