In Twisted-einpunt docht de TCP-ferbining. In WebSocket-fabryk dat ynsteld is om in proxy te ûnderhanneljen hat noch altyd dat einpunt nedich om mei de tuskenpersoan te ferbinen.

Foar in besteande Autobahn-applikaasje dy't syn standerthelper brûkt:

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 is de besteande WebSocket-protokolklasse fan 'e applikaasje. Hâld de reaktor en it opromjen fan 'e ferbining yn 'e libbenssyklus fan dy applikaasje. Foar in iepenbiere WSS-tsjinst dy't fia in iepenbiere tuskenpersoan tastien is, leveret de HTTP-proxylist kandidaten foar de proxy-host en -poarte fan it fabryk.

Foar in fabryk dat foar in proxy ynsteld is, ferbynt connectWS TCP mei de proxy en behâldt it TLS-kontekst fan 'e bestimming foar de lettere feilige ferbining. It omslút de gewoane HTTP-proxyferbining earst net yn it TLS fan 'e bestimming.

In oanpaste opstelling fan HostnameEndpoint en ClientService moat deselde ferdieling behâlde: earst ferbine mei de proxy, lit dan it ynstelde fabryk it doel ûnderhannelje en it nedige TLS fêstigje. It einpunt direkt mei events.example ferbinen wylst syn fabryk in proxy-petear ferwachtet, monget dy rollen.

De WebSocket-URL bliuwt de echte bestimming fan 'e tsjinst. De hostnamme derfan leveret ek de TLS-identiteit; it ferfangen troch de hostnamme fan 'e proxy konfigurearret de bedoelde feilige tsjinst net.

Relatearre artikelen