HTTP forward proxy အတွက် Gorilla ၏ Dialer.Proxy ကို ပြင်ဆင်ပါ။ WebSocket URL သည် ဦးတည်ရာအဖြစ် ဆက်ရှိသည်-

proxyURL, err := url.Parse("http://proxy.example:8080")
if err != nil {
    return err
}
dialer := websocket.Dialer{
    Proxy: http.ProxyURL(proxyURL),
    HandshakeTimeout: 15 * time.Second,
}
conn, response, err := dialer.DialContext(
    ctx, "wss://events.example/stream", nil)

ဤအပိုင်းသည် အက်ပ်၏ ချိတ်ဆက်မှု လုပ်ဆောင်ချက်တွင် ပါဝင်ပြီး net/url, net/http, time နှင့် github.com/gorilla/websocket တို့ ရနိုင်သည်။ err နှင့် မအောင်မြင်သော handshake တုံ့ပြန်မှုကို ကိုင်တွယ်ပြီး conn ကို ပုံမှန် မက်ဆေ့ချ်နှင့် ပိတ်ခြင်း ဘဝစက်ဝန်းဖြင့် စီမံပါ။ ခွင့်ပြုထားသော အများပြည်သူ WSS အဆုံးမှတ်အတွက် HTTP proxy စာရင်း က proxyURL အတွက် ကိုယ်စားလှယ်လောင်းများ ပေးသည်။

HTTP proxy dialer သည် အလယ်အလတ် ချိတ်ဆက်မှုကို ဖွင့်ပြီး ဦးတည်ရာအတွက် CONNECT ကို ပို့သည်။ wss အတွက် WebSocket handshake မတိုင်မီ တည်ဆောက်ထားသော tunnel မှတဆင့် ဦးတည်ရာ TLS ကို ဖြတ်သွားသည်။

NetDialContext သည် အောက်ခြေအဆင့် TCP ချိတ်ဆက်မှုကို စိတ်ကြိုက်ပြင်ဆင်သည်။ proxy port သို့သာ ညွှန်ပြခြင်းက CONNECT ကို အကောင်အထည်မဖော်ပါ။ Proxy ကိုပါ သတ်မှတ်ထားပါက စိတ်ကြိုက် ကွန်ရက် callback သည် ကြားခံနှင့် ချိတ်ဆက်ပြီး proxy အလွှာက ညှိနှိုင်းမှုကို ကိုင်တွယ်သည်။

wss URL တွင် ဦးတည်ရာ hostname ကို ထားရှိပါ၊ သို့မှသာ ပုံမှန် TLS အထောက်အထား စစ်ဆေးမှုသည် ရည်ရွယ်ထားသော ဆာဗာအပေါ် သက်ရောက်မည်။

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