node-http-proxy как сопоставить ответ на запрос - PullRequest
0 голосов
/ 30 октября 2018

Я хотел бы создать пользовательский интерфейс, который чем-то похож на Fiddler от Telerik. Для этого я создал прокси с помощью node-http-proxy, который отлично работает: -)

Но теперь у меня проблема с тем, как я сопоставляю ответ на мой запрос, и я абсолютно не представляю, что я могу попробовать.

Вот мой текущий код:

let httpProxy = require('http-proxy');
let connect = require('connect');
let bodyParser = require('body-parser');
let http = require('http');

let proxy = httpProxy.createProxyServer();

let app = connect()
  .use(bodyParser.json()) //json parser
  .use((req, res) => {
    let options = {
      target: "myTargetHere"
    };

    proxy.web(req, res, options);
  });

http.createServer(app).listen(8000);

proxy.on("proxyReq", (proxyReq, req, res) => {
  if (req.body) {
    let bodyData = JSON.stringify(req.body);
    let bodyLength = Buffer.byteLength(bodyData)
    proxyReq.setHeader("Content-Length", bodyLength);
    proxyReq.write(bodyData);
  }
});

proxy.on('proxyRes', (proxyRes, req, res) => {
  let body = new Buffer.alloc(0);
  let bodyLength = 0;

  proxyRes.on('data' , data => {
      process.stdout.write("c ");
      body = Buffer.concat([body, data]);
  });
  proxyRes.on("end", () => {
    bodyLength = Buffer.byteLength(body);
    body = body.toString();
    console.log("response body length: ", bodyLength);
  });
});

Кто-нибудь знает, как я могу сопоставить ответ в proxy.on('proxyRes', ...) с моим запросом в proxy.on('proxyReq', ...)? Есть ли что-то уникальное в каждом запросе / ответе?

...