Diese Anleitung zeigt Ihnen, wie Sie einen WebSocket-Proxyserver in Python erstellen.
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()
Sie haben erfolgreich einen Python-basierten WebSocket-Proxyserver entwickelt. Dieser Server kann Client-Identitäten authentifizieren, eine dauerhafte Verbindung zu einer bestimmten Datenquelle aufrechterhalten und von der Quelle empfangene Nachrichten effektiv an alle verifizierten Clients verteilen. Diese Funktionalität erweist sich als unschätzbar wertvoll für Anwendungen, die die sichere und sofortige Verbreitung von Daten von einem einzigen Ursprung an eine vielfältige Benutzerbasis erfordern.
Gründliche Servertests sind entscheidend, um optimale Leistung und Zuverlässigkeit sicherzustellen. Es überprüft die ordnungsgemäße Handhabung von Verbindungen und Nachrichtenübertragungen. Um die Effizienz zu steigern, sollten Sie Lastausgleichsmechanismen implementieren und Verbindungsheader anpassen. Schließlich empfiehlt es sich, den Server in einer geeigneten Umgebung für den Produktionseinsatz bereitzustellen, beispielsweise einem Cloud-Dienst, der speziell für langfristige Netzwerkverbindungen entwickelt wurde.
Schauen Sie sich auch das ursprünglich veröffentlichte Tutorial auf unserer Website an: Scaling a Forex WebSocket with Python Proxy
Das obige ist der detaillierte Inhalt vonImplementierung eines skalierbaren Forex-WebSocket mithilfe eines Python-Proxys. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!