0

新しいポートへの呼び出しをプロキシしたかったので、サーバー作成のすべてのロジックを次のような関数にカプセル化しました

var appRouter = express.Router();
app.use(appRouter);


appRouter.route('*')
    .get(function (req, res) {
        proxyRequest(req, res)
    }

プロキシリクエスト関数に次のコードを入れます

function proxyRequest(req, res) {

    httpProxy = require('http-proxy');
    var proxy = httpProxy.createProxyServer({});
    var hostname = req.headers.host.split(":")[0];

    proxy.web(req, res, {
        target: 'http://' + hostname + ':' + 5000
    });
    http.createServer(function (req, res) {
        console.log("App proxy new port is: " + 5000)
        res.end("Request received on " + 5000);
    }).listen(5000);

}

問題は、最初の呼び出しを行ったときに、プロキシが正常に動作していることを確認し、2 回目にブラウザをヒットしたときに新しいサーバー ポート 5000 でリッスンしていることです。エラーが発生しました。

Error: listen EADDRINUSE
    at exports._errnoException (util.js:746:11)
    at Server._listen2 (net.js:1146:14)

どうすればこれを回避できますか

4

1 に答える 1

1

proxyRequest関数からプロキシ サーバーの作成ロジックを削除する

これを試して:

httpProxy = require('http-proxy');
var proxy = httpProxy.createProxyServer({});
http.createServer(function (req, res) {
    console.log("App proxy new port is: " + 5000)
    res.end("Request received on " + 5000);
}).listen(5000);

function proxyRequest(req, res) {
  var hostname = req.headers.host.split(":")[0];
  proxy.web(req, res, {
    target: 'http://' + hostname + ':' + 5000
  });    
}
于 2015-07-07T10:29:22.917 に答える