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 იდენტობას; მისი პროქსის ჰოსტის სახელით ჩანაცვლება არ აყენებს განზრახულ უსაფრთხო სერვისს.