import { io } from 'socket.io-client';
import { SocksProxyAgent } from 'socks-proxy-agent';

const agent = new SocksProxyAgent('socks5h://proxy.example:1080');
const socket = io('https://events.example', {
  agent,
  transports: ['polling', 'websocket'],
});

အစစ်အမှန် Socket.IO ဝန်ဆောင်မှုကို အသုံးပြုပါ။ Node agent သည် SOCKS ကို ညှိနှိုင်းသည်၊ socks5h သည် ဦးတည်ရာ DNS ကို ထို proxy သို့ အပ်နှင်းသည်။ အများပြည်သူ ကြားခံများမှတစ်ဆင့် အများပြည်သူ ဝန်ဆောင်မှု စမ်းသပ်မှု ခွင့်ပြုပါက SOCKS5 proxy စာရင်း မှ ကိုက်ညီသော endpoint ကို ယူပါ။

နောက်ပိုင်း WebSocket upgrade မအောင်မြင်မီ polling အောင်မြင်နိုင်သည်။ လမ်းကြောင်း နှစ်ခုလုံးနှင့် အပေါ်ဆုံးအဆင့် agent ကို override လုပ်သော မည်သည့် transportOptions ကိုမဆို စစ်ဆေးပါ။

ဤဥပမာသည် ဤ transport နှစ်ခုကို တမင်တကာ အသုံးပြုသည်။ WebTransport သည် အခြား အကောင်အထည်ဖော်မှုကို သုံးပြီး browser တွင် ထည့်သွင်းထားသော JavaScript သည် browser ဆက်တင်ကို လိုက်နာသည်။ သာမန် WebSocket endpoint သည်လည်း Socket.IO ဆာဗာ မဟုတ်ပါ။

လက်ရှိ event နှင့် ပြန်လည်ချိတ်ဆက်မှု ယုတ္တိကို ထိန်းသိမ်းပြီး ချိတ်ဆက်မှု ပြီးဆုံးသောအခါ client ကို ဖြတ်တောက်ကာ ၎င်း၏ agent ကို လွှတ်ပါ။

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