Крајната точка на Twisted ја извршува TCP врската. Фабриката за WebSocket конфигурирана да преговара прокси сепак ја бара таа крајна точка за да се поврзе со посредникот.

За постоечка Autobahn апликација што го користи стандардниот помошник:

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 е постоечката класа на WebSocket протокол на апликацијата. Задржете го реакторот и чистењето на врската во животниот циклус на таа апликација. За јавна WSS услуга дозволена преку јавен посредник, списокот на HTTP проксија обезбедува кандидати за прокси хостот и портата на фабриката.

За фабрика конфигурирана со прокси, connectWS поврзува TCP со проксито и го задржува TLS контекстот на дестинацијата за подоцнежната безбедна врска. Таа не ја обвиткува обичната HTTP прокси врска во TLS на дестинацијата на почетокот.

Прилагодениот распоред на HostnameEndpoint и ClientService мора да ја зачува истата поделба: прво поврзување со проксито, потоа конфигурираната фабрика да ја преговара целта и да воспостави потребниот TLS. Поврзувањето на крајната точка директно со events.example додека нејзината фабрика очекува прокси разговор ги меша тие улоги.

URL-то на WebSocket останува вистинската дестинација на услугата. Неговото име на хост ја дава и TLS идентитетот; заменувањето со името на прокси хостот не ја конфигурира саканата безбедна услуга.

Поврзани статии