Twisted oxirgi nuqtasi TCP ulanishini amalga oshiradi. Proksi bilan muzokara qilish uchun sozlangan WebSocket fabrikasi vositachiga ulanish uchun baribir shu oxirgi nuqtaga muhtoj.

Standart yordamchisidan foydalanadigan mavjud Autobahn ilovasi uchun:

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 — ilovaning mavjud WebSocket protokol sinfi. Reaktor va ulanishni tozalashni shu ilovaning hayot sikli ichida saqlang. Ommaviy vositachi orqali ruxsat etilgan ommaviy WSS xizmati uchun HTTP proksi ro'yxati fabrikaning proksi xosti va porti uchun nomzodlar beradi.

Proksi uchun sozlangan fabrikada connectWS TCP ni proksiga ulaydi va keyingi xavfsiz ulanish uchun manzilning TLS kontekstini saqlaydi. U avvaliga oddiy HTTP proksi ulanishini manzil TLS i bilan o'ramaydi.

Maxsus HostnameEndpoint va ClientService tuzilmasi xuddi shu bo'linishni saqlashi kerak: avval proksiga ulanib, keyin sozlangan fabrika maqsad bilan muzokara qilishiga va kerakli TLS ni o'rnatishiga imkon bering. Fabrika proksi suhbatini kutayotganda oxirgi nuqtani to'g'ridan-to'g'ri events.example ga ulash bu rollarni aralashtiradi.

WebSocket URL xizmatning haqiqiy manzili bo'lib qoladi. Uning xost nomi TLS identifikatsiyasini ham beradi; uni proksi xost nomi bilan almashtirish ko'zlangan xavfsiz xizmatni sozlamaydi.

O'xshash maqolalar