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 може да зачува бинарна содржина кога е потребно целосно баферирање, но го чува целото тело во меморијата. Течен тек на слика што минува не ја бара таа цена.

Поврзани статии