Conectar Autobahn Twisted WSS a través dun proxy HTTP
Deixe que connectWS coordine o punto final do proxy e o TLS de destino posterior en lugar de abrir un punto final directo xunto a unha fábrica consciente do proxy.
Un punto final de Twisted realiza a conexión TCP. Unha fábrica de WebSocket configurada para negociar un proxy segue necesitando ese punto final para conectarse ao intermediario.
Para unha aplicación Autobahn existente que usa o seu axudante estándar:
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 é a clase de protocolo WebSocket existente da aplicación. Manteña o reactor e a limpeza da conexión dentro do ciclo de vida desa aplicación. Para un servizo WSS público permitido a través dun intermediario público, a lista de proxies HTTP fornece candidatos para o host e o porto do proxy da fábrica.
Para unha fábrica configurada con proxy, connectWS conecta TCP ao proxy e conserva o contexto TLS de destino para a conexión segura posterior. Non envolve inicialmente a conexión HTTP normal do proxy no TLS de destino.
Unha disposición personalizada de HostnameEndpoint e ClientService debe preservar a mesma división: primeiro conectar co proxy e despois deixar que a fábrica configurada negocie o obxectivo e estableza o TLS necesario. Conectar o punto final directamente a events.example mentres a súa fábrica espera unha conversa de proxy mestura eses papeis.
O URL do WebSocket segue sendo o destino real do servizo. O seu nome de host tamén fornece a identidade TLS; substituílo polo nome de host do proxy non configura o servizo seguro previsto.