Ikonekta ang Autobahn Twisted WSS sa pamamagitan ng HTTP proxy
Hayaang i-coordinate ng connectWS ang proxy endpoint at ang susunod na TLS ng destinasyon sa halip na magbukas ng direktang endpoint sa tabi ng factory na may kamalayan sa proxy.
Ang Twisted endpoint ang gumagawa ng TCP connection. Ang WebSocket factory na naka-configure upang makipag-usap sa proxy ay kailangan pa rin ng endpoint na iyon upang kumonekta sa tagapamagitan.
Para sa umiiral na Autobahn application na gumagamit ng karaniwang helper nito:
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,
)
Ang ApplicationProtocol ay ang umiiral na WebSocket protocol class ng application. Panatilihin ang reactor at paglilinis ng koneksyon sa lifecycle ng application na iyon. Para sa pampublikong WSS service na pinapayagan sa pamamagitan ng pampublikong tagapamagitan, ang listahan ng HTTP proxy ay nagbibigay ng mga kandidato para sa proxy host at port ng factory.
Para sa factory na naka-configure na may proxy, ikinokonekta ng connectWS ang TCP sa proxy at pinapanatili ang TLS context ng destinasyon para sa susunod na secure na koneksyon. Hindi nito binabalot sa simula ang karaniwang HTTP proxy connection sa TLS ng destinasyon.
Ang custom na kaayusan ng HostnameEndpoint at ClientService ay dapat panatilihin ang parehong paghahati: kumonekta muna sa proxy, pagkatapos hayaang ang naka-configure na factory ang makipag-usap sa target at magtatag ng kinakailangang TLS. Ang pagkonekta ng endpoint nang direkta sa events.example habang inaasahan ng factory nito ang usapan sa proxy ay hinahalo ang mga papel na iyon.
Ang WebSocket URL ay nananatiling tunay na destinasyon ng serbisyo. Ang hostname nito ay nagbibigay din ng TLS identity; ang pagpapalit nito ng hostname ng proxy ay hindi naka-configure ang inaasahang secure na serbisyo.