У меня есть 3 приложения node.js (A, B, C).A является точкой входа, и мне нравится, чтобы все запросы, поступающие в эту точку входа, перенаправлялись в направлении B или C (в зависимости от значения параметра в запросе).
В настоящее время я делаю это с помощью res.redirect в A (я использую каркас expressjs).Это работает нормально, за исключением того, что это не совсем прозрачно (я вижу снаружи, что исходный запрос был перенаправлен).
Чтобы решить эту проблему, у меня будет B и C прослушивать сокет вместо номера порта, но я не знаю, как получить A, перенаправляющий запрос на сокеты, используемые B или C.
Любая идея окак сделать процесс 2 node.js общающимся через сокеты?
** ОБНОВЛЕНИЕ **
I have changed the code of A to use node-proxy:
app.all('/port/path/*', function(req, res){
// Host to proxied to
var host = 'localhost';
// Retrieve port and build new URL
var arr_url = req.url.split('/');
var port = arr_url[1];
var new_url = '/' + arr_url.slice(2).join('/');
console.log("CURRENT URL:" + req.url); // url is /5000/test/...
console.log("NEW URL :" + new_url); // url is /test/...
// Change URL
req.url = new_url;
var proxy = new httpProxy.HttpProxy();
proxy.proxyRequest(req, res, {
host: host,
port: port,
enableXForwarded: false,
buffer: proxy.buffer(req)
});
console.log("Proxied to " + host + ':' + port + new_url);
// For example: the url is localhost:10000/5000/test
// the log tells me 'Proxied to localhost:5000/test' => that is correct
// But... I do not get any return
// If I issue 'curl -XGET http://localhost:5000/test' I get the return I expect
});
Любая очевидная ошибка в этом?