HTTP proxy မှတစ်ဆင့် Autobahn Twisted WSS ချိတ်ဆက်ခြင်း
proxy ကို သိသော factory ၏ ဘေးတွင် တိုက်ရိုက် endpoint ဖွင့်မည့်အစား connectWS ကို proxy endpoint နှင့် နောက်ပိုင်း ဦးတည်ရာ TLS ကို ညှိနှိုင်းခွင့်ပြုပါ။
Twisted endpoint သည် TCP ချိတ်ဆက်မှုကို လုပ်ဆောင်သည်။ proxy နှင့် ညှိနှိုင်းရန် ပြင်ဆင်ထားသော WebSocket factory သည် ကြားခံသို့ ချိတ်ဆက်ရန် ထို endpoint ကို အလိုရှိဆဲဖြစ်သည်။
စံအထောက်အကူကို အသုံးပြုသော ရှိပြီးသား Autobahn အပလီကေးရှင်းအတွက်:
from autobahn.twisted.websocket import WebSocketClientFactory, connectWS
from twisted.internet import ssl
factory = WebSocketClientFactory(
'wss://events.example/channel',
proxy={'host': 'proxy.example', 'port': 8080},
)
factory.protocol = ApplicationProtocol
connector = connectWS(
factory,
contextFactory=ssl.optionsForClientTLS('events.example'),
timeout=10,
)
ApplicationProtocol သည် အပလီကေးရှင်း၏ ရှိပြီးသား WebSocket ပရိုတိုကော အတန်းဖြစ်သည်။ reactor နှင့် ချိတ်ဆက်မှု ရှင်းလင်းခြင်းကို ထို အပလီကေးရှင်း၏ သက်တမ်းစက်ဝန်းတွင် ထားပါ။ အများသူငှာ ကြားခံမှတစ်ဆင့် ခွင့်ပြုထားသော အများသူငှာ WSS ဝန်ဆောင်မှုအတွက် HTTP proxy စာရင်း သည် factory ၏ proxy host နှင့် port အတွက် ကိုယ်စားလှယ်လောင်းများ ပေးသည်။
proxy အတွက် ပြင်ဆင်ထားသော factory တွင် connectWS သည် TCP ကို proxy သို့ ချိတ်ဆက်ပြီး နောက်ပိုင်း လုံခြုံသော ချိတ်ဆက်မှုအတွက် ဦးတည်ရာ TLS အခြေအနေကို ထိန်းသိမ်းသည်။ ၎င်းသည် အစတွင် သာမန် HTTP proxy ချိတ်ဆက်မှုကို ဦးတည်ရာ TLS ဖြင့် မဖုံးထားပါ။
စိတ်ကြိုက် HostnameEndpoint နှင့် ClientService အစီအစဉ်သည် တူညီသော ခွဲဝေမှုကို ထိန်းသိမ်းရမည်။ ပထမဦးစွာ proxy သို့ ချိတ်ဆက်ပါ၊ ထို့နောက် ပြင်ဆင်ထားသော factory ကို ပစ်မှတ်ကို ညှိနှိုင်းပြီး လိုအပ်သော TLS ကို တည်ထောင်ခွင့်ပြုပါ။ factory က proxy စကားပြောကို မျှော်လင့်နေစဉ် endpoint ကို events.example သို့ တိုက်ရိုက် ချိတ်ဆက်ခြင်းသည် ထို အခန်းကဏ္ဍများကို ရောနှောစေသည်။
WebSocket URL သည် ဝန်ဆောင်မှု၏ အစစ်အမှန် ဦးတည်ရာ အဖြစ် ဆက်ရှိသည်။ ၎င်း၏ host အမည်သည် TLS အထောက်အထားကိုလည်း ပေးသည်။ proxy host အမည်ဖြင့် အစားထိုးခြင်းသည် ရည်ရွယ်ထားသော လုံခြုံသော ဝန်ဆောင်မှုကို မပြင်ဆင်ပါ။