Konekti Autobahn Twisted WSS tra HTTP-prokurilo
Lasu connectWS kunordigi la prokurilan finpunkton kaj la postan celan TLS anstataŭ malfermi rektan finpunkton apud prokurilo-konscia fabriko.
Twisted-finpunkto plenumas la TCP-konekton. WebSocket-fabriko agordita por intertrakti prokurilon ankoraŭ bezonas tiun finpunkton por konekti al la peranto.
Por ekzistanta Autobahn-aplikacio uzanta sian norman helpanton:
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 estas la ekzistanta WebSocket-protokola klaso de la aplikacio. Konservu la reaktoron kaj la purigadon de la konekto en la vivociklo de tiu aplikacio. Por publika WSS-servo permesita tra publika peranto, la listo de HTTP-prokuriloj provizas kandidatojn por la prokurila gastiganto kaj haveno de la fabriko.
Por fabriko agordita kun prokurilo, connectWS konektas TCP al la prokurilo kaj konservas la celan TLS-kuntekston por la posta sekura konekto. Ĝi komence ne volvas la ordinarajn HTTP-prokurilajn konektojn en la celan TLS.
Propra aranĝo de HostnameEndpoint kaj ClientService devas konservi la saman dividon: unue konekti al la prokurilo, poste lasi la agorditan fabrikon intertrakti la celon kaj starigi la bezonatan TLS. Konekti la finpunkton rekte al events.example dum ĝia fabriko atendas prokurilan interparolon miksas tiujn rolojn.
La WebSocket-URL restas la vera celloko de la servo. Ĝia gastigantnomo ankaŭ provizas la TLS-identecon; anstataŭigi ĝin per la prokurila gastigantnomo ne agordas la celatan sekuran servon.