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

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

Brug denne kropsvej efter valg af mål, anmodningen til kilden og klargøring af status og headere til klienten. Node-streams leverer normalt Buffere; saml dem ikke i en streng til billeder eller andet uændret binært indhold.

pipeline koordinerer modtryk og videresender fejl. Det kan ødelægge destinationen ved fejl, så antag ikke, at der bagefter kan sendes endnu et HTTP-fejlsvar. Dette uddrag er ikke en komplet proxyserver.

For bytes, der passerer, skal du bevare relevante metadata for repræsentationen, såsom medietype og indholdskodning, og håndtere hop-specifikke felter via videresendelsesregler. En sammenligning af gzip-bytes og matchende svarheadere viser valget mellem kodet og afkodet repræsentation.

Bevidst omskrivning af HTML kræver en anden vej: genkend medietypen, håndtér komprimering og tegnsæt, transformér teksten og generér metadata til de nye bytes. Den gamle Content-Length kan ikke beskrive en ændret krop.

Buffer.concat kan bevare binært indhold, når fuld buffering er nødvendig, men gemmer hele kroppen i hukommelsen. En passerende billedstream har ikke brug for den omkostning.

Relaterede artikler