Koble Autobahn Twisted WSS gjennom en HTTP-proxy
La connectWS koordinere proxy-endepunktet og den senere TLS-en til destinasjonen i stedet for å åpne et direkte endepunkt ved siden av en proxybevisst fabrikk.
Et Twisted-endepunkt utfører TCP-tilkoblingen. En WebSocket-fabrikk som er konfigurert til å forhandle en proxy, trenger fortsatt dette endepunktet for å koble til mellommennen.
For en eksisterende Autobahn-applikasjon som bruker standardhjelperen:
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 applikasjonens eksisterende WebSocket-protokollklasse. Hold reaktoren og oppryddingen av tilkoblingen innenfor den applikasjonens livssyklus. For en offentlig WSS-tjeneste som er tillatt gjennom en offentlig mellommann, leverer HTTP-proxylisten kandidater for fabrikkens proxyvert og -port.
For en fabrikk konfigurert med proxy kobler connectWS TCP til proxyen og beholder destinasjonens TLS-kontekst for den senere sikre tilkoblingen. Den pakker ikke først den vanlige HTTP-proxytilkoblingen inn i destinasjonens TLS.
Et tilpasset oppsett av HostnameEndpoint og ClientService må bevare samme inndeling: koble til proxyen først, deretter la den konfigurerte fabrikken forhandle målet og etablere den nødvendige TLS-en. Å koble endepunktet direkte til events.example mens fabrikken forventer en proxysamtale blander disse rollene.
WebSocket-URL-en forblir tjenestens egentlige destinasjon. Vertsnavnet gir også TLS-identiteten; å erstatte det med proxyens vertsnavn konfigurerer ikke den tiltenkte sikre tjenesten.