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 може зберегти двійковий вміст, коли потрібне повне буферизування, але зберігає все тіло в памʼяті. Потік зображення, що проходить, не потребує цих витрат.

Схожі статті