Menyambung Autobahn Twisted WSS melalui proksi HTTP
Biarkan connectWS menyelaraskan titik hujung proksi dan TLS destinasi kemudian bukannya membuka titik hujung terus di sebelah kilang yang sedar proksi.
Titik hujung Twisted melakukan sambungan TCP. Kilang WebSocket yang dikonfigurasikan untuk merundingkan proksi masih memerlukan titik hujung itu untuk bersambung dengan perantara.
Untuk aplikasi Autobahn sedia ada yang menggunakan pembantu standardnya:
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 ialah kelas protokol WebSocket sedia ada aplikasi. Kekalkan reaktor dan pembersihan sambungan dalam kitaran hayat aplikasi itu. Untuk perkhidmatan WSS awam yang dibenarkan melalui perantara awam, senarai proksi HTTP menyediakan calon untuk hos dan port proksi kilang.
Untuk kilang yang dikonfigurasikan dengan proksi, connectWS menyambung TCP ke proksi dan mengekalkan konteks TLS destinasi untuk sambungan selamat kemudian. Ia pada mulanya tidak membalut sambungan proksi HTTP biasa dalam TLS destinasi.
Susunan HostnameEndpoint dan ClientService tersuai mesti mengekalkan pembahagian yang sama: sambung ke proksi dahulu, kemudian biarkan kilang yang dikonfigurasikan merundingkan sasaran dan mewujudkan TLS yang diperlukan. Menyambung titik hujung terus ke events.example sedangkan kilangnya menjangka perbualan proksi mencampurkan peranan tersebut.
URL WebSocket kekal sebagai destinasi perkhidmatan sebenar. Nama hosnya juga membekalkan identiti TLS; menggantikannya dengan nama hos proksi tidak mengkonfigurasikan perkhidmatan selamat yang dimaksudkan.