HTTP প্রক্সির মাধ্যমে Autobahn Twisted WSS সংযুক্ত করুন
প্রক্সি-সচেতন ফ্যাক্টরির পাশে সরাসরি এন্ডপয়েন্ট খোলার বদলে 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 পরিচয়ও জোগায়; প্রক্সি হোস্টনেম দিয়ে এটি প্রতিস্থাপন করলে অভীষ্ট সুরক্ষিত পরিষেবা কনফিগার হয় না।