Ncha ya Twisted hufanya muunganisho wa TCP. Kiwanda cha WebSocket kilichosanidiwa kujadiliana kuhusu proksi bado kinahitaji ncha hiyo ili kuunganisha na mpatanishi.

Kwa programu iliyopo ya Autobahn inayotumia msaidizi wake wa kawaida:

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 ni darasa lililopo la itifaki ya WebSocket ya programu. Weka kichocheo na usafishaji wa muunganisho ndani ya mzunguko wa maisha wa programu hiyo. Kwa huduma ya umma ya WSS inayoruhusiwa kupitia mpatanishi wa umma, orodha ya proksi za HTTP hutoa wagombea wa mwenyeji na lango la proksi la kiwanda.

Kwa kiwanda kilichosanidiwa na proksi, connectWS huunganisha TCP na proksi na huhifadhi muktadha wa TLS wa lengwa kwa muunganisho salama wa baadaye. Haufuniki muunganisho wa kawaida wa proksi ya HTTP katika TLS ya lengwa mwanzoni.

Mpangilio maalum wa HostnameEndpoint na ClientService lazima uhifadhi mgawanyo huo huo: kwanza unganisha na proksi, kisha acha kiwanda kilichosanidiwa kijadiliane lengwa na kianzishe TLS inayohitajika. Kuunganisha ncha moja kwa moja na events.example wakati kiwanda chake kinatarajia mazungumzo ya proksi huchanganya majukumu hayo.

URL ya WebSocket inabaki kuwa lengwa halisi la huduma. Jina lake la mwenyeji pia hutoa utambulisho wa TLS; kuibadilisha na jina la mwenyeji la proksi hakuweki huduma salama inayokusudiwa.

Makala zinazohusiana