¿Usando el servidor nodejs con el paquete de solicitud y la función pipe ()?

Estoy usando un servidor de nodejs para maquetar un backend en este momento. El servidor es un servidor web y devuelve objetos json en diferentes solicitudes, funciona perfectamente. Ahora tengo que obtener los objetos json de otro dominio, así que tengo que hacer proxy al servidor. He encontrado un paquete llamado request en npm. Puedo hacer que el ejemplo simple funcione, pero tengo que reenviar toda la página web.

Mi código para el proxy se ve así:

var $express = require('express'), $http = require('http'), $request = require('request'), $url = require('url'), $path = require('path'), $util = require('util'), $mime = require('mime'); var app = $express(); app.configure(function(){ app.set('port', process.env.PORT || 9090); app.use($express.bodyParser()); app.use($express.methodOverride()); app.use('/', function(req, res){ var apiUrl = 'http://localhost:9091'; console.log(apiUrl); var url = apiUrl + req.url; req.pipe($request(url).pipe(res)); }); }); $http.createServer(app).listen(app.get('port'), function () { console.log("Express server listening on port " + app.get('port')); if (process.argv.length > 2 && process.argv.indexOf('-open') > -1) { var open = require("open"); open('http://localhost:' + app.get('port') + '/', function (error) { if (error !== null) { console.log("Unable to lauch application in browser. Please install 'Firefox' or 'Chrome'"); } }); } }) 

Estoy loggin el servidor real y está actuando correctamente, puedo seguir la respuesta de obtención, pero el cuerpo está vacío. Solo quiero pasar por todo el sitio web desde el servidor de nodejs a través de la función request.pipe. ¿Algunas ideas?

Como en Node.js, a.pipe(b) devuelve b (ver documentación ), su código es equivalente a esto:

 // req.pipe($request(url).pipe(res)) // is equivalent to $request(url).pipe(res); req.pipe(res); 

Como solo desea un proxy, no hay necesidad de canalizar los req en res (y aquí no tiene sentido canalizar múltiples flujos legibles en un solo flujo grabable), simplemente mantenga esto y su proxy funcionará:

 $request(url).pipe(res);