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.

Sorodni članki