Panduan ini akan mengajar anda cara membuat pelayan proksi WebSocket dalam Python.
pip install websockets
import asyncio import websockets import json class WebSocketProxy: def init(self, source_url, symbols): self.source_url = source_url self.clients = set() self.symbols = symbols self.valid_user_key = "yourValidUserKey" # Single valid user key for authentication async def on_open(self, ws): print("Connected to source") symbols_str = ",".join(self.symbols.keys()) init_message = f"{{"userKey":"your_api_key", "symbol":"{symbols_str}"}}" await ws.send(init_message)
async def client_handler(self, websocket, path): try: # Wait for a message that should contain the authentication key auth_message = await asyncio.wait_for(websocket.recv(), timeout=10) auth_data = json.loads(auth_message) user_key = auth_data.get("userKey") if user_key == self.valid_user_key: self.clients.add(websocket) print(f"Client authenticated with key: {user_key}") try: await websocket.wait_closed() finally: self.clients.remove(websocket) else: print("Authentication failed") await websocket.close(reason="Authentication failed") except (asyncio.TimeoutError, json.JSONDecodeError, KeyError): print("Failed to authenticate") await websocket.close(reason="Failed to authenticate")
async def source_handler(self): async with websockets.connect(self.source_url) as websocket: await self.on_open(websocket) async for message in websocket: await self.broadcast(message) async def broadcast(self, message): if self.clients: await asyncio.gather(*(client.send(message) for client in self.clients))
def run(self, host="localhost", port=8765): start_server = websockets.serve(self.client_handler, host, port) asyncio.get_event_loop().run_until_complete(start_server) asyncio.get_event_loop().run_until_complete(self.source_handler()) asyncio.get_event_loop().run_forever() if name == "main": symbols = {"EURUSD": {}, "GBPUSD": {}, "USDJPY": {}, "AUDUSD": {}, "USDCAD": {}} source_url = "ws://example.com/source" proxy = WebSocketProxy(source_url, symbols) proxy.run()
Anda telah berjaya membangunkan pelayan proksi WebSocket berasaskan Python. Pelayan ini boleh mengesahkan identiti pelanggan, mengekalkan sambungan berterusan ke sumber data yang ditetapkan dan mengedarkan mesej yang diterima daripada sumber kepada semua pelanggan yang disahkan dengan berkesan. Fungsi ini terbukti tidak ternilai untuk aplikasi yang memerlukan penyebaran data yang selamat dan segera daripada asal tunggal kepada pangkalan pengguna yang pelbagai.
Ujian pelayan yang teliti adalah penting untuk memastikan prestasi dan kebolehpercayaan yang optimum. Ia mengesahkan pengendalian sambungan dan penghantaran mesej yang betul. Untuk meningkatkan kecekapan, pertimbangkan untuk melaksanakan mekanisme pengimbangan beban dan menyesuaikan pengepala sambungan. Akhir sekali, adalah dinasihatkan untuk menggunakan pelayan ke persekitaran yang sesuai untuk penggunaan pengeluaran, seperti perkhidmatan awan yang direka khusus untuk menampung sambungan rangkaian jangka panjang.
Selain itu, sila lihat tutorial asal yang diterbitkan di tapak web kami: Menskalakan Soket Web Forex dengan Proksi Python
Atas ialah kandungan terperinci Melaksanakan WebSocket Forex Berskala Menggunakan Proksi Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!