Обрабатывать xhr через nodejs - PullRequest
0 голосов
/ 29 апреля 2011

Я только начал использовать nodejs, и пока мне это очень нравится.Тем не менее, у меня возникли небольшие проблемы с тем, чтобы сделать сервер / клиент среднего уровня.

Чтобы уточнить, я пытаюсь использовать nodejs на стороне клиента, и это будет посредник между сервером и браузером клиента.По сути, nodejs будет казаться клиенту сервером и будет выглядеть как клиент перед сервером.Итак, я получил его для прослушивания порта 8080 на локальном хосте, и любые входящие запросы извлекаются с помощью nodejs.

Мой вопрос заключается в том, как я могу сделать так, чтобы nodejs проанализировал запрос перед его обработкой в ​​клиентебраузер?Любая идея / ссылка / помощь с благодарностью.

Вот простой код, который у меня есть:

var request = require('request'),
   http = require('http');

// var url = require('url');
// URL.parse(string);

var server = http.createServer(function (req, res) {
    var dest = req.url.substr(1, req.url.length - 1);
    //console.log(dest);
    request.get({uri: dest}, function (err, response, html) {
            console.log(html);
            console.log(response);
            res.end(html);
    });
    console.log('fetched from ' + req.url);
});

server.listen(3000);

Ответы [ 2 ]

1 голос
/ 30 апреля 2011

@ alienhard правильно, что вы в основном хотите использовать обратный прокси-сервер, но я не буду быстро искать библиотеку, как он предложил.Это довольно легко сделать с помощью узла.

var http = require("http")
var util = require("util")

http.createServer(function(req, rsp){

    var options = {
      host: 'www.google.com',
      port: 80,
      path: req.url,
      method: req.method,
      headers: req.headers
    }  

    proxy = http.request(options, function(response){
      rsp.writeHead(response.statusCode, response.headers)

      console.log(response.statusCode)
      console.log(response.headers) 

      response.on("data", function(chunk){ 
        console.log(chunk.toString());
        rsp.write(chunk) 
      })

      response.on("end", function(){ rsp.end() })
    })

    proxy.once("error", function(){ })
    util.pump(req, proxy)
    req.on('end', function () { proxy.end() })

}).listen(3000)
1 голос
/ 29 апреля 2011

Итак, что вам действительно нужно, это http прокси ... Вы смотрели на node-http-proxy ?Он позволяет настроить поведение, но предоставляет все необходимые функции, включая поддержку WebSockets.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...