Twisted krajnja tačka obavlja TCP vezu. WebSocket fabrika konfigurisana da pregovara proxy i dalje treba tu krajnju tačku da bi se povezala sa 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 je postojeća klasa WebSocket protokola aplikacije. Zadržite reactor i čišćenje veze u životnom ciklusu te aplikacije. Za javnu WSS uslugu dozvoljenu kroz javni posrednik, lista HTTP proxyja daje kandidate za proxy host i port fabrike.

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

Prilagođeni raspored HostnameEndpoint i ClientService mora sačuvati istu podelu: prvo se povezati na proxy, zatim pustiti konfigurisanu fabriku da pregovara cilj i uspostavi potrebni TLS. Povezivanje krajnje tačke direktno na events.example dok njena fabrika očekuje proxy razgovor meša te uloge.

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

Povezani članci