Cercando di saperne di più su node.js creando un semplice server proxy http. Lo scenario di utilizzo è semplice: utente -> proxy -> server -> proxy -> utenteSemplice proxy node.js mediante piping del server http alla richiesta http
Il codice seguente funziona fino all'ultimo passaggio. Impossibile trovare il modo di reindirizzare l'output del connettore all'utente.
#!/usr/bin/env node
var
url = require('url'),
http = require('http'),
acceptor = http.createServer().listen(3128);
acceptor.on('request', function(request, response) {
console.log('request ' + request.url);
request.pause();
var options = url.parse(request.url);
options.headers = request.headers;
options.method = request.method;
options.agent = false;
var connector = http.request(options);
request.pipe(connector);
request.resume();
// connector.pipe(response); // doesn't work
// connector.pipe(request); // doesn't work either
});
Utilizzando tcpflow vedo la richiesta in ingresso dal browser, allora la richiesta proxy in uscita, quindi la risposta del server indietro al proxy. In qualche modo non sono riuscito a ritrasmettere la risposta al browser.
Qual è il modo corretto di implementare questa logica con i tubi?
-1 perché: stream.js: 94 laterale er; // Errore di flusso non gestito nella pipe. ^ errore: collegare ECONNREFUSED a errnoException (net.js: 901: 11) a Object.afterConnect [come onComplete] (net.js: 892: 19) –
@ Rob, molto probabilmente questo esempio non funziona con la nuova API Streams2. Gli stream2 sono stati introdotti come beta nel nodo 0.9 e sono diventati stabili nel ramo 0.10. 0,10 è stato rilasciato marzo 2013 - mesi dopo questa discussione. Quindi, se vuoi davvero essere più costruttivo, invece di inserire -1, adattare l'esempio per la nuova API. –
@NikolaiGorchilov L'esempio precedente ha funzionato per me con il nodo 0.10.13. Solo il cambiamento che ho dovuto fare è 'response.writeHead' invece di' response.writeHeader' – Gireesh