Twisted završna točka obavlja TCP vezu. WebSocket tvornica konfigurirana za pregovaranje proxyja i dalje treba tu završnu točku za povezivanje s posrednikom.

Za postojeću Autobahn aplikaciju koja koristi 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 postojeća je klasa WebSocket protokola aplikacije. Zadržite reactor i čišćenje veze u životnom ciklusu te aplikacije. Za javnu WSS uslugu dopuštenu kroz javnog posrednika, popis HTTP proxyja daje kandidate za proxy host i port tvornice.

Za tvornicu konfiguriranu za proxy, connectWS spaja TCP na proxy i zadržava TLS kontekst odredišta za kasniju sigurnu vezu. U početku ne obavija običnu HTTP proxy vezu TLS-om odredišta.

Prilagođeni raspored HostnameEndpoint i ClientService mora sačuvati istu podjelu: prvo se povezati s proxyjem, zatim pustiti konfiguriranu tvornicu da pregovara cilj i uspostavi potrebni TLS. Povezivanje završne točke izravno na events.example dok njezina tvornica očekuje proxy razgovor miješa te uloge.

WebSocket URL ostaje stvarno odredište usluge. Njegovo ime hosta također daje TLS identitet; zamjena imenom proxy hosta ne konfigurira željenu sigurnu uslugu.

Povezani članci