Autobahn Twisted WSS-i ühendamine HTTP-puhverserveri kaudu
Lase connectWS-l koordineerida puhverserveri lõpp-punkti ja hilisemat sihtkoha TLS-i, selle asemel et avada puhverserverit teadvat tehast kõrval otsene lõpp-punkt.
Twistedi lõpp-punkt teostab TCP-ühenduse. Puhverserveriga läbirääkimiseks seadistatud WebSocketi tehas vajab vahendajaga ühenduse loomiseks siiski seda lõpp-punkti.
Olemasoleva Autobahni rakenduse jaoks, mis kasutab oma standardabilist:
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 on rakenduse olemasolev WebSocketi protokolli klass. Hoia reaktor ja ühenduse koristamine selle rakenduse elutsükli sees. Avaliku vahendaja kaudu lubatud avaliku WSS-teenuse jaoks pakub HTTP-puhverserverite loend kandidaate tehase puhverserveri hosti ja pordi jaoks.
Puhverserveri jaoks seadistatud tehase korral ühendab connectWS TCP puhverserveriga ja säilitab sihtkoha TLS-konteksti hilisema turvalise ühenduse jaoks. See ei mässi algselt tavalist HTTP-puhverserveri ühendust sihtkoha TLS-i.
Kohandatud HostnameEndpointi ja ClientService'i paigutus peab säilitama sama jaotuse: kõigepealt ühenda puhverserveriga, seejärel lase seadistatud tehases sihtmärk läbi rääkida ja vajalik TLS luua. Lõpp-punkti otse events.exampleiga ühendamine, kui selle tehas ootab puhverserveri vestlust, segab need rollid.
WebSocketi URL jääb teenuse tegelikuks sihtkohaks. Selle hostinimi annab ka TLS-i identiteedi; selle asendamine puhverserveri hostinimega ei seadista kavandatud turvalist teenust.