Łączenie Autobahn Twisted WSS przez serwer proxy HTTP
Pozwól connectWS koordynować punkt końcowy proxy i późniejszy TLS celu zamiast otwierać bezpośredni punkt końcowy obok fabryki świadomej proxy.
Punkt końcowy Twisted wykonuje połączenie TCP. Fabryka WebSocket skonfigurowana do negocjowania proxy nadal potrzebuje tego punktu końcowego, aby połączyć się z pośrednikiem.
Dla istniejącej aplikacji Autobahn korzystającej ze standardowego pomocnika:
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 to istniejąca klasa protokołu WebSocket aplikacji. Utrzymuj reaktor i czyszczenie połączenia w cyklu życia tej aplikacji. Dla publicznej usługi WSS dozwolonej przez publicznego pośrednika lista proxy HTTP dostarcza kandydatów na host i port proxy fabryki.
Dla fabryki skonfigurowanej z proxy connectWS łączy TCP z proxy i zachowuje kontekst TLS celu dla późniejszego bezpiecznego połączenia. Początkowo nie opakowuje zwykłego połączenia proxy HTTP w TLS celu.
Niestandardowy układ HostnameEndpoint i ClientService musi zachować ten sam podział: najpierw połączyć się z proxy, potem pozwolić skonfigurowanej fabryce wynegocjować cel i ustanowić wymagany TLS. Połączenie punktu końcowego bezpośrednio z events.example, gdy jego fabryka oczekuje rozmowy przez proxy, miesza te role.
Adres URL WebSocket pozostaje rzeczywistym celem usługi. Jego nazwa hosta dostarcza również tożsamość TLS; zastąpienie jej nazwą hosta proxy nie konfiguruje zamierzonej bezpiecznej usługi.