Twisted uç noktası TCP bağlantısını gerçekleştirir. Proxy ile görüşmek üzere yapılandırılmış bir WebSocket fabrikası, aracıya bağlanmak için yine de bu uç noktaya ihtiyaç duyar.

Standart yardımcısını kullanan mevcut bir Autobahn uygulaması için:

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, uygulamanın mevcut WebSocket protokol sınıfıdır. Reaktörü ve bağlantı temizliğini o uygulamanın yaşam döngüsünde tutun. Genel bir aracı üzerinden izin verilen genel bir WSS hizmeti için HTTP proxy listesi, fabrikanın proxy ana bilgisayarı ve portu için adaylar sağlar.

Proxy için yapılandırılmış bir fabrikada connectWS, TCP'yi proxy'ye bağlar ve sonraki güvenli bağlantı için hedefin TLS bağlamını korur. Başlangıçta sıradan HTTP proxy bağlantısını hedefin TLS'i ile sarmaz.

Özel bir HostnameEndpoint ve ClientService düzeni aynı bölünmeyi korumalıdır: önce proxy'ye bağlanın, sonra yapılandırılmış fabrikanın hedefi görüşmesine ve gereken TLS'i kurmasına izin verin. Fabrikası proxy konuşması beklerken uç noktayı doğrudan events.example'a bağlamak bu rolleri karıştırır.

WebSocket URL'si hizmetin gerçek hedefi olarak kalır. Ana bilgisayar adı aynı zamanda TLS kimliğini sağlar; onu proxy'nin ana bilgisayar adıyla değiştirmek amaçlanan güvenli hizmeti yapılandırmaz.

İlgili makaleler