Pripojenie Autobahn Twisted WSS cez HTTP proxy
Nechajte connectWS koordinovať koncový bod proxy a neskorší TLS cieľa namiesto otvárania priameho koncového bodu vedľa továrne, ktorá proxy pozná.
Koncový bod Twisted vykonáva TCP spojenie. Továreň WebSocket nakonfigurovaná na vyjednávanie proxy napriek tomu potrebuje tento koncový bod na pripojenie k prostredníkovi.
Pre existujúcu aplikáciu Autobahn používajúcu štandardné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úca trieda protokolu WebSocket aplikácie. Reaktor a čistenie spojenia udržujte v životnom cykle tejto aplikácie. Pre verejnú službu WSS povolenú cez verejného prostredníka poskytuje zoznam HTTP proxy kandidátov pre hostiteľa a port proxy továrne.
Pri továrni nakonfigurovanej s proxy pripája connectWS TCP k proxy a zachováva kontext TLS cieľa pre neskoršie zabezpečené spojenie. Spočiatku nezabaľuje bežné spojenie HTTP proxy do TLS cieľa.
Vlastné usporiadanie HostnameEndpoint a ClientService musí zachovať rovnaké rozdelenie: najprv sa pripojiť k proxy, potom nechať nakonfigurovanú továreň vyjednať cieľ a nadviazať požadovaný TLS. Pripojenie koncového bodu priamo k events.example, kým jeho továreň očakáva rozhovor cez proxy, tieto úlohy mieša.
URL WebSocket zostáva skutočným cieľom služby. Jeho názov hostiteľa tiež poskytuje identitu TLS; nahradenie názvom hostiteľa proxy nenakonfiguruje zamýšľanú zabezpečenú službu.