Страницы

суббота, 11 апреля 2015 г.

Node.js HTTP Proxy

Недавно познакомился с модулем по имени http-proxy. На мой взгляд образцовый инструмент - отбивает заявленный функционал на все 100% и в то же время простой как сатиновые трусы. Статистика модуля на GitHub, npm, а также мэйнтэйнер (не нашел подходящее слово в русском языке) в лице nodejitsu говорят сами за себя. Хочу предложить очень простой пример для того чтобы понять о чем речь:

var http = require('http'),
    httpProxy = require('http-proxy'),
    frontPort = 5050,
    i = 3,
    j = i;

(function go(i) {
  if (i) return (function() {
    var port = frontPort + i;
    http.createServer(function(req, res) {
      var s = 'I am Groot, port: ' + port;
      res.end(s);
    }).listen(port, function() {
      console.log('Back server listen on port', port);
      go(--i);
    });
  })();

  var proxy = httpProxy.createProxyServer({});
  http.createServer(function(req, res) {
    // здесь логика
    proxy.web(req, res, { target: 'http://127.0.0.1:505' + (Math.floor(Math.random() * j) + 1) });
  }).listen(frontPort, function() {
    console.log('Front server listen on port', frontPort);
  });
})(i);

Запускаем приложение:

Открываем браузер, идем по адресу http://localhost:5050 и обновляем страницу несколько раз.

Easy peasy :).