ເຊື່ອມຕໍ່ Autobahn Twisted WSS ຜ່ານ HTTP proxy
ໃຫ້ connectWS ປະສານຈຸດປາຍທາງ proxy ແລະ TLS ປາຍທາງພາຍຫຼັງ ແທນທີ່ຈະເປີດຈຸດປາຍທາງໂດຍກົງຂ້າງໂຮງງານທີ່ຮູ້ຈັກ proxy.
ຈຸດປາຍທາງ Twisted ເຮັດການເຊື່ອມຕໍ່ TCP. ໂຮງງານ WebSocket ທີ່ຕັ້ງຄ່າເພື່ອເຈລະຈາ proxy ຍັງຕ້ອງການຈຸດປາຍທາງນັ້ນເພື່ອເຊື່ອມຕໍ່ກັບຕົວກາງ.
ສຳລັບແອັບພລິເຄຊັນ 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 ທີ່ມີຢູ່ແລ້ວຂອງແອັບພລິເຄຊັນ. ຮັກສາ reactor ແລະ ການທຳຄວາມສະອາດການເຊື່ອມຕໍ່ໄວ້ໃນວົງຈອນຊີວິດຂອງແອັບພລິເຄຊັນນັ້ນ. ສຳລັບບໍລິການ WSS ສາທາລະນະທີ່ອະນຸຍາດຜ່ານຕົວກາງສາທາລະນະ, ລາຍຊື່ HTTP proxy ສະໜອງຜູ້ສະໝັກສຳລັບໂຮສ ແລະ ພອດ proxy ຂອງໂຮງງານ.
ສຳລັບໂຮງງານທີ່ຕັ້ງຄ່າດ້ວຍ proxy, connectWS ເຊື່ອມ TCP ກັບ proxy ແລະ ຮັກສາບໍລິບົດ TLS ຂອງປາຍທາງໄວ້ສຳລັບການເຊື່ອມຕໍ່ທີ່ປອດໄພພາຍຫຼັງ. ໃນເບື້ອງຕົ້ນມັນບໍ່ໄດ້ຫຸ້ມການເຊື່ອມຕໍ່ HTTP proxy ປົກກະຕິດ້ວຍ TLS ຂອງປາຍທາງ.
ການຈັດວາງ HostnameEndpoint ແລະ ClientService ແບບກຳນົດເອງຕ້ອງຮັກສາການແບ່ງງານແບບດຽວກັນ: ເຊື່ອມຕໍ່ກັບ proxy ກ່ອນ, ແລ້ວໃຫ້ໂຮງງານທີ່ຕັ້ງຄ່າແລ້ວ ເຈລະຈາເປົ້າໝາຍ ແລະ ສ້າງ TLS ທີ່ຈຳເປັນ. ການເຊື່ອມຈຸດປາຍທາງໂດຍກົງກັບ events.example ໃນຂະນະທີ່ໂຮງງານຂອງມັນຄາດຫວັງການສົນທະນາ proxy ຈະປົນບົດບາດເຫຼົ່ານັ້ນ.
URL ຂອງ WebSocket ຍັງເປັນປາຍທາງບໍລິການຕົວຈິງ. ຊື່ໂຮສຂອງມັນຍັງສະໜອງຕົວຕົນ TLS; ການແທນມັນດ້ວຍຊື່ໂຮສຂອງ proxy ບໍ່ໄດ້ຕັ້ງຄ່າບໍລິການທີ່ປອດໄພຕາມທີ່ຕັ້ງໃຈ.