Autobahn Twisted WSS iwwer en HTTP-Proxy verbannen
Loosst connectWS den Proxy-Endpunkt an déi spéider TLS vum Zil koordinéieren, amplaz en direkten Endpunkt nieft enger proxy-bewosster Fabrick opzemaachen.
En Twisted-Endpunkt mécht d'TCP-Verbindung. Eng WebSocket-Fabrick, déi konfiguréiert ass fir en Proxy auszehandelen, brauch nach ëmmer dësen Endpunkt, fir sech mam Vermëttler ze verbannen.
Fir eng bestehend Autobahn-Applikatioun, déi hire Standard-Helfer benotzt:
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 ass déi existéierend WebSocket-Protokollsklass vun der Applikatioun. Halt de Reakter an d'Botzen vun der Verbindung am Liewenszyklus vun där Applikatioun. Fir en ëffentleche WSS-Service, deen iwwer en ëffentleche Vermëttler erlaabt ass, liwwert d'HTTP-Proxy-Lëscht Kandidaten fir den Proxyhost a -port vun der Fabrick.
Bei enger Fabrick, déi fir en Proxy konfiguréiert ass, verbënnt connectWS TCP mam Proxy a behält den TLS-Kontext vum Zil fir déi spéider sécher Verbindung. Et ëmwierkelt net am Ufank déi gewéinlech HTTP-Proxyverbindung mam TLS vum Zil.
Eng eege Usuerdnung vun HostnameEndpoint a ClientService muss déiselwecht Opdeelung behalen: fir d'éischt mam Proxy verbannen, dann déi konfiguréiert Fabrick d'Zil aushandelen an d'erfuerderlech TLS opbauen loossen. Den Endpunkt direkt mat events.example ze verbannen, während seng Fabrick eng Proxysdiskussioun erwaart, vermëscht dës Rollen.
D'WebSocket-URL bleift déi richteg Ziladress vum Service. Hire Hostnumm liwwert och d'TLS-Identitéit; en duerch den Hostnumm vum Proxy z'ersetzen konfiguréiert net dee virgesinnene séchere Service.