Povezivanje Autobahn Twisted WSS preko HTTP proxyja
Neka connectWS uskladi proxy završnu točku i kasniji TLS odredišta umjesto otvaranja izravne završne točke uz tvornicu koja poznaje proxy.
Twisted završna točka obavlja TCP vezu. WebSocket tvornica konfigurirana za pregovaranje proxyja i dalje treba tu završnu točku za povezivanje s posrednikom.
Za postojeću Autobahn aplikaciju koja koristi svoj standardni pomoćnik:
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 postojeća je klasa WebSocket protokola aplikacije. Zadržite reactor i čišćenje veze u životnom ciklusu te aplikacije. Za javnu WSS uslugu dopuštenu kroz javnog posrednika, popis HTTP proxyja daje kandidate za proxy host i port tvornice.
Za tvornicu konfiguriranu za proxy, connectWS spaja TCP na proxy i zadržava TLS kontekst odredišta za kasniju sigurnu vezu. U početku ne obavija običnu HTTP proxy vezu TLS-om odredišta.
Prilagođeni raspored HostnameEndpoint i ClientService mora sačuvati istu podjelu: prvo se povezati s proxyjem, zatim pustiti konfiguriranu tvornicu da pregovara cilj i uspostavi potrebni TLS. Povezivanje završne točke izravno na events.example dok njezina tvornica očekuje proxy razgovor miješa te uloge.
WebSocket URL ostaje stvarno odredište usluge. Njegovo ime hosta također daje TLS identitet; zamjena imenom proxy hosta ne konfigurira željenu sigurnu uslugu.