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

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

Lo ipa ara yìí lẹ́yìn yíyan àfojúsùn, ìbéèrè sí orísun àti ìmúrasílẹ̀ ipò àti àwọn àkọlé sí ẹ̀gbẹ́ alábàáṣepọ̀. Àwọn ṣíṣàn Node máa ń fúnni ní Buffer; má ṣe kó wọn jọ sínú okùn fún àwòrán tàbí àwọn àkóónú bínárì mìíràn tí kò yí padà.

pipeline máa ń ṣètò ìpàtẹ̀yìn, ó sì ń tan àwọn ìkùnà ká. Nígbà àṣìṣe ó lè pa ibi-àfojúsùn run, nítorí náà má ṣe rò pé a lè fi ìdáhùn àṣìṣe HTTP mìíràn ránṣẹ́ lẹ́yìn náà. Ẹ̀ka yìí kì í ṣe olùpèsè proxy pípé.

Fún àwọn byte tí ń kọjá, pa metadata ìṣàpẹẹrẹ tó bá yẹ mọ́, bíi irú ọ̀nà ìgbóhùnsáfẹ́fẹ́ àti ìkọ̀wé àkóónú, kí o sì máa ṣètò àwọn pápá tó ṣe pàtàkì fún ìpele kọ̀ọ̀kan nípasẹ̀ àwọn òfin gbígbé. àwọn byte gzip àti àwọn àkọlé ìdáhùn tó bá mu ìfiwéra fi yíyan láàárín ìṣàpẹẹrẹ tí a kọ̀wé àti èyí tí a túmọ̀ hàn.

Àtúntẹ̀ HTML mọ̀ọ́mọ̀ nílò ipa mìíràn: dámọ̀ irú ọ̀nà ìgbóhùnsáfẹ́fẹ́ rẹ̀, ṣètò ìrẹ̀pẹ̀ àti àpapọ̀ lẹ́tà, yí ọ̀rọ̀ padà kí o sì ṣẹ̀dá metadata fún àwọn byte tuntun. Content-Length àtijọ́ kò lè ṣàpèjúwe ara tó ti yí padà.

Buffer.concat lè pa àkóónú bínárì mọ́ nígbà tí a bá nílò ìkópamọ́ pípé, ṣùgbọ́n ó máa ń tọ́jú gbogbo ara sínú ìrántí. Ṣíṣàn àwòrán tí ń kọjá kò nílò iye ìnáwó yẹn.

Àwọn àpilẹ̀kọ tó jọra