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

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

Օգտագործեք այս մարմնի ուղին թիրախի ընտրությունից, վերին հոսքի հարցումից և ներքևի հոսքի կարգավիճակի ու վերնագրերի պատրաստումից հետո։ Node հոսքերը սովորաբար տալիս են Buffer; մի կուտակեք դրանք տողում պատկերների կամ այլ անփոփոխ բինար բովանդակության համար։

pipeline-ը համակարգում է հակաճնշումը և տարածում ձախողումները։ Սխալի դեպքում այն կարող է ոչնչացնել նպատակակետը, ուստի մի ենթադրեք, որ դրանից հետո հնարավոր է ուղարկել ևս մեկ HTTP սխալի պատասխան։ Այս հատվածը ամբողջական proxy սերվեր չէ։

Անցնող բայթերի համար պահպանեք ներկայացման համապատասխան մետատվյալները, ինչպիսիք են մեդիայի տեսակը և բովանդակության կոդավորումը, իսկ hop-ին բնորոշ դաշտերը մշակեք փոխանցման կանոններով։ gzip բայթերի և համապատասխան պատասխանի վերնագրերի համեմատությունը ցույց է տալիս կոդավորված և ապակոդավորված ներկայացման ընտրությունը։

HTML-ի դիտավորյալ վերագրումը պահանջում է այլ ուղի՝ ճանաչել մեդիայի տեսակը, մշակել սեղմումը և նշանների հավաքածուն, ձևափոխել տեքստը և ստեղծել մետատվյալներ նոր բայթերի համար։ Հին Content-Length-ը չի կարող նկարագրել փոփոխված մարմին։

Buffer.concat-ը կարող է պահպանել բինար բովանդակությունը, երբ պահանջվում է ամբողջական բուֆերավորում, սակայն պահում է ամբողջ մարմինը հիշողության մեջ։ Անցնող պատկերի հոսքը այդ ծախսի կարիքը չունի։

Առնչվող հոդվածներ