Tengja Autobahn Twisted WSS í gegnum HTTP-proxy
Leyfðu connectWS að samræma endapunkt proxysins og síðara TLS áfangastaðarins í stað þess að opna beinan endapunkt við hliðina á verksmiðju sem þekkir proxy.
Twisted-endapunktur framkvæmir TCP-tenginguna. WebSocket-verksmiðja sem er stillt til að semja um proxy þarf samt þennan endapunkt til að tengjast milliliðnum.
Fyrir fyrirliggjandi Autobahn-forrit sem notar venjulega hjálparann sinn:
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 er fyrirliggjandi WebSocket-samskiptaregluflokkur forritsins. Haltu reactor og hreinsun tengingarinnar innan lífsferils þess forrits. Fyrir opinbera WSS-þjónustu sem er leyfð í gegnum opinberan millilið veitir HTTP-proxylistinn frambjóðendur fyrir proxyhýsil og port verksmiðjunnar.
Fyrir verksmiðju sem er stillt með proxy tengir connectWS TCP við proxyið og varðveitir TLS-samhengi áfangastaðarins fyrir síðari öruggu tenginguna. Það umlykur ekki venjulegu HTTP-proxytenginguna í TLS áfangastaðarins í byrjun.
Sérsniðið fyrirkomulag HostnameEndpoint og ClientService verður að varðveita sömu skiptingu: tengjast fyrst proxyinu, láta síðan stilltu verksmiðjuna semja um markið og koma á nauðsynlegu TLS. Að tengja endapunktinn beint við events.example á meðan verksmiðjan býst við proxysamtali blandar þessum hlutverkum.
WebSocket-slóðin er áfram raunverulegur áfangastaður þjónustunnar. Hýsilnafn hennar veitir einnig TLS-auðkennina; að skipta því út fyrir hýsilnafn proxysins stillir ekki fyrirhugaða öruggu þjónustu.