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.

Seotud artiklid