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

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

Бул дене жолун максатты тандоодон, жогорку агымга сурамдан жана төмөнкү агымдын статусу менен заголовокторун даярдоодон кийин колдонуңуз. Node агымдары адатта Buffer берет; аларды сүрөттөр же өзгөрбөгөн башка бинардык мазмун үчүн сапка чогултпаңыз.

pipeline каршы басымды координациялайт жана каталарды таратат. Ката кезде ал максатты жок кылышы мүмкүн, ошондуктан андан кийин дагы бир HTTP ката жообун жөнөтүүгө болот деп ойлобоңуз. Бул фрагмент толук прокси сервер эмес.

Өтүп жаткан байттар үчүн медиа түрү жана мазмундук коддоо сыяктуу тиешелүү көрсөтүү метаберилиштерин сактаңыз, ал эми хопко тиешелүү талааларды жиберүү эрежелери менен иштетиңиз. gzip байттары менен тиешелүү жооп заголовокторунун салыштыруусу коддолгон жана декоддолгон көрсөтүүнүн тандоосун көрсөтөт.

HTML'ди атайын кайра жазуу башка жолду талап кылат: медиа түрүн таанып, кысуу жана белгилер топтомун иштетип, текстти өзгөртүп, жаңы байттар үчүн метаберилиштерди түзүңүз. Эски Content-Length өзгөргөн денени сүрөттөй албайт.

Buffer.concat толук буферлөө керек болгондо бинардык мазмунду сактай алат, бирок бүт денени эстутумда кармайт. Өтүп жаткан сүрөт агымы бул чыгымга муктаж эмес.

Тектеш макалалар