เชื่อมต่อ 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 ขณะที่โรงงานคาดการณ์การสนทนาผ่านพร็อกซีจะทำให้บทบาทเหล่านั้นปนกัน
URL ของ WebSocket ยังคงเป็นปลายทางบริการจริง ชื่อโฮสต์ของมันยังให้ข้อมูลระบุตัวตน TLS ด้วย การแทนที่ด้วยชื่อโฮสต์ของพร็อกซีไม่ได้กำหนดค่าบริการที่ปลอดภัยตามที่ตั้งใจ