Autobahn Twisted WSS-ийг HTTP проксиор холбох
Прокси мэддэг үйлдвэрийн хажууд шууд төгсгөлийн цэг нээхийн оронд connectWS прокси төгсгөлийн цэг болон дараагийн очих газрын TLS-ийг зохицуулаарай.
Twisted төгсгөлийн цэг нь TCP холболтыг гүйцэтгэдэг. Прокситой хэлэлцэхээр тохируулсан WebSocket үйлдвэрт зуучлагчтай холбогдохын тулд тэр төгсгөлийн цэг шаардлагатай хэвээр.
Стандарт туслахыг ашигладаг одоо байгаа Autobahn програмын хувьд:
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 нь програмын одоо байгаа WebSocket протоколын класс юм. Реактор болон холболтын цэвэрлэгээг тэр програмын амьдралын мөчлөгт байлгаарай. Нийтийн зуучлагчаар зөвшөөрөгдсөн нийтийн WSS үйлчилгээний хувьд HTTP прокси жагсаалт нь үйлдвэрийн прокси хост болон портын нэр дэвшигчдийг өгдөг.
Проксигоор тохируулсан үйлдвэрийн хувьд connectWS TCP-г прокситой холбож, дараагийн аюулгүй холболтын тулд очих газрын TLS контекстийг хадгална. Энэ нь эхэндээ энгийн HTTP прокси холболтыг очих газрын TLS-ээр ороохгүй.
Захиалгат HostnameEndpoint болон ClientService зохион байгуулалт ижил хуваалтыг хадгалах ёстой: эхлээд прокситой холбогдож, дараа нь тохируулсан үйлдвэр зорилттой хэлэлцэж, шаардлагатай TLS-ийг байгуулахыг зөвшөөрнө. Үйлдвэр нь прокси яриа хүлээж байхад төгсгөлийн цэгийг шууд events.example-тэй холбох нь эдгээр үүргийг хольдог.
WebSocket URL нь үйлчилгээний жинхэнэ очих газар хэвээр байна. Түүний хост нэр нь TLS таних тэмдгийг мөн өгдөг; үүнийг прокси хост нэрээр солих нь зорьсон аюулгүй үйлчилгээг тохируулахгүй.