2013-03-05 2 views
4

Я создал прокси-сервер в node.js с помощью модуля node-http-proxy.Получить ответ от прокси-сервера

выглядит так:

var http = require('http'), 
httpProxy = require('http-proxy'), 
io = require("socket.io").listen(5555); 

var proxy = new httpProxy.RoutingProxy(); 

http.createServer(function (req, res) { 
    proxy.proxyRequest(req, res, { 
     host: 'localhost', 
     port: 1338 
    }); 
}).listen(9000); 

Итак, мне нужно, прежде чем отправить ответ обратно клиенту, чтобы получить тело от сервера, на котором я прокси и анализировать его.

Но я не могу найти событие или атрибут, где я могу получить эти данные. Я пробовал:

proxy.on('end', function (data) { 
    console.log('end'); 
}); 

Но я не могу понять, как получить из него тело мим.

ответ

4

Я нашел ответ: Я перепишу функцию отклика для тела -

var http = require('http'), 
    httpProxy = require('http-proxy'), 
    io = require("socket.io").listen(5555); 

var proxy = new httpProxy.RoutingProxy(); 

http.createServer(function (req, res) { 
    console.log(req.url); 
    res.oldWrite = res.write; 
    res.write = function(data) { 
     /* add logic for your data here */ 
     console.log(data.toString('UTF8')); 
     res.oldWrite(data); 
    } 

    proxy.proxyRequest(req, res, { 
     host: 'localhost', 
     port: 1338 
    }); 

}).listen(9000); 

Этого код будет утешать запрос всех URL-адрес и ответ формирует эту конечную точку.

4

Если все, что вам нужно сделать, это проверить ответ (только для чтения), вы можете использовать:

proxy.on('proxyRes', function(proxyRes, req, res){ 

    proxyRes.on('data' , function(dataBuffer){ 
     var data = dataBuffer.toString('utf8'); 
     console.log("This is the data from target server : "+ data); 
    }); 

}); 

Но, обратите внимание, что события «proxyRes» испускается после того, как ответ посылают.

Эталон: https://github.com/nodejitsu/node-http-proxy/issues/382

+0

Это спасло мою жизнь ... фактическая на https://www.npmjs.com/package/http-proxy справка о очень плохая –

Смежные вопросы