Node.js ပရောက်စီတွင် ဒွိစုံပုံတုံ့ပြန်ချက်များကို ထိန်းသိမ်းပါ
ဒွိစုံကိုယ်ထည်များကို Node ရှေ့ပရောက်စီမှတစ်ဆင့် စီးဆင်းစေပြီး စာသားကုဒ်ဖျက်ခြင်းကို ရည်ရွယ်ချက်ရှိသော စာသားပြောင်းလဲမှုများအတွက်သာ ချန်ထားပါ။
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 သည် ပြည့်စုံသော ဘူဖာလုပ်ရန် လိုအပ်သောအခါ ဒွိစုံအကြောင်းအရာကို ထိန်းသိမ်းနိုင်သော်လည်း ကိုယ်ထည်တစ်ခုလုံးကို မှတ်ဉာဏ်တွင် သိမ်းထားသည်။ ဖြတ်သန်းသွားသော ပုံစီးကြောင်းသည် ထိုကုန်ကျစရိတ်ကို မလိုအပ်ပါ။