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.

Tengdir greinar