Kople Autobahn Twisted WSS gjennom ein HTTP-proxy
Lat connectWS samordne proxy-endepunktet og den seinare TLS-en til målstaden i staden for å opne eit direkte endepunkt ved sida av ein proxybevisst fabrikk.
Eit Twisted-endepunkt gjer TCP-tilkoplinga. Ein WebSocket-fabrikk som er sett opp til å forhandle ein proxy, treng framleis dette endepunktet for å kople til mellommannen.
For ein eksisterande Autobahn-applikasjon som brukar standardhjelparen:
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 er den eksisterande WebSocket-protokollklassen til applikasjonen. Hald reaktoren og oppryddinga av tilkoplinga innanfor livssyklusen til den applikasjonen. For ein offentleg WSS-teneste som er tillaten gjennom ein offentleg mellommann, leverer HTTP-proxylista kandidatar for proxyverten og -porten til fabrikken.
For ein fabrikk sett opp med proxy koplar connectWS TCP til proxyen og held på TLS-konteksten til målstaden for den seinare trygge tilkoplinga. Ho pakkar ikkje først den vanlege HTTP-proxytilkoplinga inn i TLS-en til målstaden.
Eit tilpassa oppsett av HostnameEndpoint og ClientService må halde på same inndelinga: kople til proxyen først, deretter la den sette opp fabrikken forhandle målet og etablere den naudsynte TLS-en. Å kople endepunktet direkte til events.example medan fabrikken ventar ein proxysamtale blandar desse rollene.
WebSocket-URL-en blir verande den eigenlege målstaden til tenesta. Vertsnamnet gir òg TLS-identiteten; å byta det ut med vertsnamnet til proxyen set ikkje opp den tiltenkte trygge tenesta.