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

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

Naudokite šį turinio kelią po tikslo pasirinkimo, užklausos į šaltinį ir būsenos bei antraščių paruošimo klientui. Node srautai paprastai pateikia Buffer; nesikaupkite jų į eilutę vaizdams ar kitam nepasikeitusiam dvejetainiam turiniui.

pipeline koordinuoja priešslėgį ir skleidžia klaidas. Įvykus klaidai jis gali sunaikinti paskirties vietą, todėl nemanote, kad po to galima išsiųsti dar vieną HTTP klaidos atsakymą. Šis fragmentas nėra visavertis tarpinės serveris.

Praeinančių baitų atveju išsaugokite svarbią atvaizdavimo metaduomenų informaciją, pavyzdžiui, medijos tipą ir turinio kodavimą, o konkrečiam šuoliui būdingus laukus apdorokite persiuntimo taisyklėmis. gzip baitų ir atitinkamų atsakymo antraščių palyginimas parodo pasirinkimą tarp užkoduoto ir iššifruoto atvaizdavimo.

Sąmoningas HTML perrašymas reikalauja kito kelio: atpažinkite medijos tipą, apdorokite suspaudimą ir simbolių rinkinį, transformuokite tekstą ir sugeneruokite metaduomenis naujiems baitams. Senasis Content-Length negali aprašyti pasikeitusio turinio.

Buffer.concat gali išsaugoti dvejetainį turinį, kai reikia visiško buferio, tačiau saugo visą turinį atmintyje. Praeinantis vaizdo srautas šių sąnaudų nepatiria.

Susiję straipsniai