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-ке қосу осы рөлдерді араластырады.

WebSocket URL қызметтің нақты мақсаты болып қалады. Оның хост атауы TLS сәйкестігін де береді; оны прокси хост атауымен ауыстыру көзделген қауіпсіз қызметті конфигурацияламайды.

Қатысты мақалалар