Povezovanje Autobahn Twisted WSS prek HTTP-proxyja
Naj connectWS uskladi končno točko proxyja in poznejši TLS cilja, namesto da odpre neposredno končno točko ob tovarni, ki pozna proxy.
Končna točka Twisted izvede povezavo TCP. Tovarna WebSocket, nastavljena za pogajanje o proxyju, še vedno potrebuje to končno točko za povezavo s posrednikom.
Za obstoječo aplikacijo Autobahn, ki uporablja svoj standardni pomočnik:
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 obstoječi razred protokola WebSocket v aplikaciji. Reaktor in čiščenje povezave ohranite v življenjskem ciklu te aplikacije. Za javno storitev WSS, dovoljeno prek javnega posrednika, seznam proxyjev HTTP ponuja kandidate za gostitelja in vrata proxyja tovarne.
Pri tovarni, nastavljeni s proxyjem, connectWS poveže TCP s proxyjem in ohrani kontekst TLS cilja za poznejšo varno povezavo. Sprva ne ovije običajne povezave proxyja HTTP v TLS cilja.
Sestava po meri iz HostnameEndpoint in ClientService mora ohraniti enako delitev: najprej se povezati s proxyjem, nato pustiti nastavljeni tovarni, da se pogaja o cilju in vzpostavi potrebni TLS. Povezava končne točke neposredno z events.example, medtem ko njena tovarna pričakuje pogovor prek proxyja, te vloge meša.
URL WebSocket ostane resnični cilj storitve. Njegovo ime gostitelja zagotavlja tudi identiteto TLS; zamenjava z imenom gostitelja proxyja ne nastavi želene varne storitve.