Undici က request ကို dispatcher မှပို့သည်။ ရွေးသည့် HTTP ပရောက်စီအတွက် ProxyAgent ဖန်တီးပြီး process တစ်ခုလုံး၏ global dispatcher မပြောင်းဘဲ fetch ခေါ်ဆိုမှုသို့ပေးပါ။

npm install [email protected]
import { fetch, ProxyAgent } from 'undici';

const dispatcher = new ProxyAgent('http://203.0.113.10:8080');

try {
  const response = await fetch('https://example.com/', {
    dispatcher,
    signal: AbortSignal.timeout(15000),
  });

  console.log(response.status);
  console.log(await response.text());
} finally {
  await dispatcher.close();
}

ပရိုဂရမ်ကို .mjs ဖိုင်အဖြစ်သိမ်းပါ၊ သို့မဟုတ် ES-module project သုံးပါ။ စာတမ်း IP အစား HTTP ပရောက်စီစာရင်းမှ HTTP ပရောက်စီပေးပါ။ import သည် ရည်ရွယ်ချက်ရှိရှိ Undici ၏ fetch implementation သုံးသဖြင့် dispatcher option သည် ဥပမာ client နှင့်သက်ဆိုင်သည်။

IP ကိုအပြစ်မတင်မီ Node ကိုက်ညီမှုစစ်ပါ

Undici ထောက်ပံ့သည့် Node version သည် package release ပေါ်မူတည်သည်။ ဥပမာက Undici 8.12.3 သုံးပြီး Node 22.19.0 သို့မဟုတ် ပိုသစ်လိုသည်။ module load သို့မဟုတ် engine version အမှားသည် request ပရောက်စီသို့မရောက်မီဖြစ်သည်။ Node တိုင်း နောက်ဆုံး Undici ကိုမောင်းနိုင်မည်ဟု မယူဆဘဲ တပ်ဆင်ထားသော package ၏လိုအပ်ချက်စစ်ပါ။

agent တစ်ခုက ထပ်ခါတလဲလဲ request ကိုကိုင်နိုင်သည်

တိုတောင်းသောပရိုဂရမ်သည် အဆုံးတွင် dispatcher ပိတ်သည်။ အက်ပ်က endpoint တူကို request များပို့လျှင် agent ကိုထိုအလုပ်အတွက်သိမ်းပြီး အလုပ်ပြီးမှပိတ်ပါ။ URL တစ်ခုစီအတွက် agent ဖန်တီးပိတ်ခြင်းသည် အသုံးဝင်သော ချိတ်ဆက်မှု ပြန်လည်သုံးစွဲခြင်းကိုတားသည်။

global dispatcher သည် ပိုကျယ်ပြန့်ပြောင်းရန်ရည်ရွယ်မှသင့်လျော်သည်။ တိကျစွာပေးခြင်းက အခြားအစိတ်အပိုင်း၏ အထွက် request ကိုမပြောင်းဘဲ ပရောက်စီ IP စမ်းရန်လွယ်သည်။

တုံ့ပြန်မှုနှင့် ပျက်သည့်အဆင့်ကိုကြည့်ပါ

fetch သည် HTTP error status တိုင်းကို ငြင်းပယ်သော Promise ဟုမယူပါ။ 403 သို့မဟုတ် 429 သည် ပရောက်စီကသယ်လာသော ဝဘ်ဆိုက်၏တကယ့်တုံ့ပြန်မှုဖြစ်နိုင်သည်။ ချိတ်ဆက်မှု သို့မဟုတ် tunnel အမှားက response object မရှိမီ request ကိုငြင်းနိုင်သည်။ status ကိုခေါ်ဆိုမှုကပစ်သောအမှားနှင့် ခွဲဖတ်ပါ။

အထောက်အထားလိုလျှင် Undici ProxyAgent တွင် constructor အဆင့်ရွေးချယ်မှုရှိသည်။ ပရောက်စီ authorization header ကို ဝဘ်ဆိုက် request headers ထဲမထည့်ပါနှင့်။ agent သည် အခြားချိတ်ဆက်အဆင့်ကိုကိုင်သည်။

ဆက်စပ်ဆောင်းပါးများ