Verbind Autobahn Twisted WSS deur 'n HTTP-proxy
Laat connectWS die proxy-eindpunt en die latere bestemming-TLS koordineer in plaas van 'n direkte eindpunt langs 'n proxy-bewuste fabriek.
'n Twisted-eindpunt voer die TCP-verbinding uit. 'n WebSocket-fabriek wat ingestel is om 'n proxy te onderhandel, het steeds daardie eindpunt nodig om aan die tussenganger te koppel.
Vir 'n bestaande Autobahn-toepassing wat sy standaardhelper gebruik:
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 is die toepassing se bestaande WebSocket-protokolklas. Hou die reaktor en die verbindingsopruiming by daardie toepassing se lewensiklus. Vir 'n openbare WSS-diens wat deur 'n openbare tussenganger toegelaat word, verskaf die HTTP-proxylys kandidate vir die fabriek se proxy-gasheer en -poort.
Vir 'n fabriek wat vir 'n proxy opgestel is, verbind connectWS TCP met die proxy en behou die TLS-konteks van die bestemming vir die latere beveiligde verbinding. Dit omhul nie aanvanklik die gewone HTTP-proxyverbinding in die bestemming se TLS nie.
'n Pasgemaakte HostnameEndpoint- en ClientService-reëling moet dieselfde verdeling behou: verbind eers met die proxy en laat dan die opgestelde fabriek die teiken onderhandel en sy vereiste TLS vestig. Om die eindpunt direk aan events.example te koppel terwyl sy fabriek 'n proxy-gesprek verwag, vermeng daardie rolle.
Die WebSocket-URL bly die werklike diensbestemming. Die gasheernaam daarvan verskaf ook die TLS-identiteit; om dit deur die proxy-gasheernaam te vervang, stel nie die beoogde beveiligde diens op nie.