Connettere Autobahn Twisted WSS tramite un proxy HTTP
Lasciare che connectWS coordini l'endpoint del proxy e il successivo TLS di destinazione invece di aprire un endpoint diretto accanto a una factory consapevole del proxy.
Un endpoint Twisted esegue la connessione TCP. Una factory WebSocket configurata per negoziare un proxy ha comunque bisogno di quell'endpoint per connettersi all'intermediario.
Per un'applicazione Autobahn esistente che usa il suo helper standard:
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 è la classe di protocollo WebSocket esistente dell'applicazione. Mantenere il reactor e la pulizia della connessione nel ciclo di vita di quell'applicazione. Per un servizio WSS pubblico consentito tramite un intermediario pubblico, il elenco dei proxy HTTP fornisce candidati per l'host e la porta del proxy della factory.
Per una factory configurata con un proxy, connectWS connette il TCP al proxy e conserva il contesto TLS di destinazione per la successiva connessione sicura. Inizialmente non avvolge la normale connessione proxy HTTP nel TLS di destinazione.
Una disposizione personalizzata di HostnameEndpoint e ClientService deve preservare la stessa divisione: connettersi prima al proxy, poi lasciare che la factory configurata negozi l'obiettivo e stabilisca il TLS necessario. Connettere l'endpoint direttamente a events.example mentre la sua factory attende una conversazione proxy mescola questi ruoli.
L'URL WebSocket resta la destinazione reale del servizio. Il suo nome host fornisce anche l'identità TLS; sostituirlo con il nome host del proxy non configura il servizio sicuro previsto.