Forbind Autobahn Twisted WSS gennem en HTTP-proxy
Lad connectWS koordinere proxy-endpointet og den senere TLS til destinationen i stedet for at åbne et direkte endpoint ved siden af en proxybevidst fabrik.
Et Twisted-endpoint udfører TCP-forbindelsen. En WebSocket-fabrik, der er konfigureret til at forhandle en proxy, har stadig brug for dette endpoint for at forbinde til mellemleddet.
For en eksisterende Autobahn-applikation, der bruger sin standardhjælper:
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 er applikationens eksisterende WebSocket-protokolklasse. Hold reactor og oprydning af forbindelsen inden for den pågældende applikations livscyklus. For en offentlig WSS-tjeneste, der er tilladt gennem et offentligt mellemled, leverer HTTP-proxylisten kandidater til fabrikkens proxy-vært og -port.
For en fabrik, der er konfigureret til en proxy, forbinder connectWS TCP til proxyen og bevarer destinationens TLS-kontekst til den senere sikre forbindelse. Den pakker ikke først den almindelige HTTP-proxyforbindelse ind i destinationens TLS.
Et tilpasset arrangement af HostnameEndpoint og ClientService skal bevare samme opdeling: først forbinde til proxyen, derefter lade den konfigurerede fabrik forhandle målet og etablere den nødvendige TLS. At forbinde endpointet direkte til events.example, mens fabrikken forventer en proxysamtale, blander disse roller.
WebSocket-URL'en forbliver tjenestens egentlige destination. Dens værtsnavn leverer også TLS-identiteten; at erstatte det med proxyens værtsnavn konfigurerer ikke den tilsigtede sikre tjeneste.