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.

Aiheeseen liittyvät artikkelit