Autobahn Twisted WSS -yhteyden muodostaminen HTTP-välityspalvelimen kautta
Anna connectWS:n sovittaa välityspalvelimen päätepiste ja myöhempi kohteen TLS sen sijaan, että avaisit suoran päätepisteen välityspalvelimen tuntevan tehtaan viereen.
Twisted-päätepiste suorittaa TCP-yhteyden. Välityspalvelimen neuvotteluun määritetty WebSocket-tehdas tarvitsee silti tämän päätepisteen yhteyden muodostamiseksi välittäjään.
Olemassa olevalle Autobahn-sovellukselle, joka käyttää vakiomuotoista apuriaan:
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 on sovelluksen olemassa oleva WebSocket-protokollaluokka. Pidä reaktori ja yhteyden siivous kyseisen sovelluksen elinkaaren sisällä. Julkiselle WSS-palvelulle, joka on sallittu julkisen välittäjän kautta, HTTP-välityspalvelinluettelo tarjoaa ehdokkaita tehtaan välityspalvelimen isäntää ja porttia varten.
Välityspalvelimelle määritetyssä tehtaassa connectWS yhdistää TCP:n välityspalvelimeen ja säilyttää kohteen TLS-kontekstin myöhempää suojattua yhteyttä varten. Se ei aluksi kääri tavallista HTTP-välityspalvelinyhteyttä kohteen TLS:ään.
Mukautetun HostnameEndpoint- ja ClientService-järjestelyn on säilytettävä sama jako: yhdistä ensin välityspalvelimeen, sitten anna määritetyn tehtaan neuvotella kohde ja muodostaa tarvittava TLS. Päätepisteen yhdistäminen suoraan events.exampleen, kun sen tehdas odottaa välityspalvelinkeskustelua, sekoittaa nämä roolit.
WebSocket-URL pysyy palvelun todellisena kohteena. Sen isäntänimi antaa myös TLS-identiteetin; sen korvaaminen välityspalvelimen isäntänimellä ei määritä aiottua suojattua palvelua.