Ce guide vous apprendra comment créer un serveur proxy WebSocket en 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()
Vous avez développé avec succès un serveur proxy WebSocket basé sur Python. Ce serveur peut authentifier les identités des clients, maintenir une connexion persistante à une source de données désignée et distribuer efficacement les messages reçus de la source à tous les clients vérifiés. Cette fonctionnalité s'avère inestimable pour les applications qui nécessitent la diffusion sécurisée et instantanée de données d'une origine unique vers une base d'utilisateurs diversifiée.
Des tests approfondis du serveur sont essentiels pour garantir des performances et une fiabilité optimales. Il vérifie sa bonne gestion des connexions et de la transmission des messages. Pour améliorer l'efficacité, envisagez de mettre en œuvre des mécanismes d'équilibrage de charge et de personnaliser les en-têtes de connexion. Enfin, il est conseillé de déployer le serveur dans un environnement adapté au déploiement en production, tel qu'un service cloud spécialement conçu pour accueillir des connexions réseau à long terme.
Veuillez également jeter un œil au didacticiel initialement publié sur notre site Web : Mise à l'échelle d'un WebSocket Forex avec un proxy Python
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!