const { pipeline } = require('node:stream');

pipeline(upstreamResponse, clientResponse, (error) => {
  if (error) console.error('Proxy response failed:', error);
});

Koristite ovu putanju tijela nakon odabira cilja, zahtjeva prema izvoru i pripreme statusa i zaglavlja prema klijentu. Node tokovi obično daju Buffer objekte; ne skupljajte ih u string za slike ili drugi nepromijenjeni binarni sadržaj.

pipeline koordinira povratni pritisak i širi greške. U slučaju greške može uništiti odredište, pa ne pretpostavljajte da se nakon toga može poslati još jedan HTTP odgovor s greškom. Ovaj fragment nije potpuni proxy server.

Za propuštene bajtove sačuvajte relevantne metapodatke reprezentacije, kao što su tip medija i kodiranje sadržaja, a polja specifična za hop obrađujte pravilima prosljeđivanja. Poređenje gzip bajtova i odgovarajućih zaglavlja odgovora pokazuje izbor između kodirane i dekodirane reprezentacije.

Namjerno prepisivanje HTML-a zahtijeva drugu putanju: prepoznajte tip medija, obradite kompresiju i skup znakova, transformirajte tekst i generirajte metapodatke za nove bajtove. Stari Content-Length ne može opisati promijenjeno tijelo.

Buffer.concat može sačuvati binarni sadržaj kada je potrebno potpuno baferiranje, ali čuva cijelo tijelo u memoriji. Propušteni tok slike ne treba taj trošak.

Povezani članci