نقطه پایانی 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 همچنان مقصد واقعی سرویس است. نام میزبان آن هویت TLS را نیز تأمین می‌کند؛ جایگزینی آن با نام میزبان پروکسی سرویس امن مورد نظر را پیکربندی نمی‌کند.

مقالات مرتبط