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

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

Gebruik dit bodypad na de doelkeuze, het verzoek naar de upstream en het voorbereiden van status en headers naar de client. Node-streams leveren normaal gesproken Buffers; verzamel ze niet in een string voor afbeeldingen of andere ongewijzigde binaire inhoud.

pipeline coördineert tegendruk en propageert fouten. Het kan de bestemming bij een fout vernietigen, dus ga er niet van uit dat daarna nog een andere HTTP-foutrespons kan worden verzonden. Dit fragment is geen volledige proxyserver.

Bewaar voor doorgegeven bytes de relevante representatiemetadata, zoals mediatype en inhoudscodering, en behandel hopspecifieke velden via doorstuurregels. Een vergelijking van gzip-bytes en bijbehorende responsheaders toont de keuze tussen gecodeerde en gedecodeerde representatie.

Bewust HTML herschrijven vraagt een ander pad: herken het mediatype, behandel compressie en tekenset, transformeer de tekst en genereer metadata voor de nieuwe bytes. De oude Content-Length kan een gewijzigde body niet beschrijven.

Buffer.concat kan binaire inhoud behouden wanneer volledig bufferen nodig is, maar slaat de hele body in het geheugen op. Een doorgegeven afbeeldingsstream heeft die kosten niet nodig.

Gerelateerde artikelen