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.

Ähnlech Artikelen