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

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

Gunakan laluan badan ini selepas pemilihan sasaran, permintaan ke hulu dan penyediaan status serta pengepala ke hilir. Strim Node biasanya memberikan Buffer; jangan kumpulkannya ke dalam rentetan untuk imej atau kandungan binari lain yang tidak berubah.

pipeline menyelaras tekanan balik dan menyebarkan kegagalan. Ia mungkin memusnahkan destinasi jika berlaku ralat, jadi jangan anggap respons ralat HTTP lain boleh dihantar selepas itu. Coretan ini bukan pelayan proksi penuh.

Untuk bait yang melalui, kekalkan metadata perwakilan yang berkaitan seperti jenis media dan pengekodan kandungan, dan kendalikan medan khusus hop melalui peraturan penghantaran. Perbandingan bait gzip dan pengepala respons yang sepadan menunjukkan pilihan antara perwakilan berkod dan ternyahkod.

Penulisan semula HTML yang disengajakan memerlukan laluan lain: kenal pasti jenis medianya, kendalikan pemampatan dan set aksara, ubah teks dan jana metadata untuk bait baharu. Content-Length lama tidak dapat menerangkan badan yang berubah.

Buffer.concat boleh mengekalkan kandungan binari apabila buffering penuh diperlukan, tetapi menyimpan seluruh badan dalam memori. Strim imej yang melalui tidak memerlukan kos itu.

Artikel berkaitan