from fastapi import FastAPI, WebSocket import asyncio import websockets app = FastAPI() # 目标 WebSocket 服务器的 URL TARGET_WSS_URL = "wss://speech.platform.bing.com" @app.websocket("/ws") async def websocket_endpoint(websocket: WebSocket): await websocket.accept() # 连接到目标 WebSocket 服务器 async with websockets.connect(TARGET_WSS_URL) as target_websocket: # 创建两个任务来处理双向通信 client_to_server = asyncio.create_task(forward_messages(websocket, target_websocket)) server_to_client = asyncio.create_task(forward_messages(target_websocket, websocket)) # 等待两个任务完成 await asyncio.gather(client_to_server, server_to_client) async def forward_messages(source: WebSocket, destination: WebSocket): try: while True: message = await source.receive_text() await destination.send_text(message) except websockets.exceptions.ConnectionClosed: pass if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8000)