En Twisted-slutpunkt utför TCP-anslutningen. En WebSocket-fabrik som är konfigurerad att förhandla en proxy behöver fortfarande den slutpunkten för att ansluta till förmedlaren.

För en befintlig Autobahn-applikation som använder sin standardhjälpare:

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 är applikationens befintliga WebSocket-protokollklass. Behåll reaktorn och städningen av anslutningen inom den applikationens livscykel. För en offentlig WSS-tjänst som tillåts genom en offentlig förmedlare levererar HTTP-proxylistan kandidater för fabrikens proxyvärd och -port.

För en fabrik konfigurerad med proxy ansluter connectWS TCP till proxyn och behåller målts TLS-kontext för den senare säkra anslutningen. Den omsluter inte inledningsvis den vanliga HTTP-proxyanslutningen i målets TLS.

En anpassad uppsättning av HostnameEndpoint och ClientService måste bevara samma uppdelning: anslut till proxyn först och låt sedan den konfigurerade fabriken förhandla målet och upprätta den nödvändiga TLS:en. Att ansluta slutpunkten direkt till events.example medan fabriken väntar sig ett proxysamtal blandar dessa roller.

WebSocket-URL:en förblir tjänstens verkliga mål. Dess värdnamn ger också TLS-identiteten; att ersätta det med proxyns värdnamn konfigurerar inte den avsedda säkra tjänsten.

Relaterade artiklar