Připojení Autobahn Twisted WSS přes HTTP proxy
Nechte connectWS koordinovat koncový bod proxy a pozdější TLS cíle místo otevírání přímého koncového bodu vedle továrny, která proxy zná.
Koncový bod Twisted provádí TCP spojení. Továrna WebSocket nakonfigurovaná k vyjednávání proxy přesto potřebuje tento koncový bod, aby se připojila k prostředníkovi.
Pro existující aplikaci Autobahn používající standardního pomocníka:
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 je existující třída protokolu WebSocket aplikace. Reaktor a uklízení spojení udržujte v životním cyklu této aplikace. Pro veřejnou službu WSS povolenou přes veřejného prostředníka poskytuje seznam HTTP proxy kandidáty pro hostitele a port proxy továrny.
U továrny nakonfigurované pro proxy připojuje connectWS TCP k proxy a zachovává kontext TLS cíle pro pozdější zabezpečené spojení. Zpočátku nezabalí běžné spojení HTTP proxy do TLS cíle.
Vlastní sestava HostnameEndpoint a ClientService musí zachovat stejné rozdělení: nejprve se připojit k proxy, potom nechat nakonfigurovanou továrnu vyjednat cíl a navázat požadované TLS. Připojení koncového bodu přímo k events.example, zatímco jeho továrna očekává rozhovor přes proxy, tyto role míchá.
URL WebSocket zůstává skutečným cílem služby. Jeho název hostitele také poskytuje identitu TLS; nahrazení názvem hostitele proxy nenakonfiguruje zamýšlenou zabezpečenou službu.