#!/usr/bin/env python3 """ 测试WebSocket连接速度 """ import asyncio import sys import os import time import aiohttp import json # 添加项目根目录到Python路径 sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) from app.core.app.factory import create_development_app from app.utils.structured_log import get_structured_logger, LogLevel import uvicorn logger = get_structured_logger(__name__, LogLevel.INFO) async def test_websocket_connection_speed(): """测试WebSocket连接速度""" try: logger.info("开始测试WebSocket连接速度") # 创建应用 app = create_development_app() logger.info("应用创建成功") # 启动服务器 config = uvicorn.Config( app=app, host="127.0.0.1", port=8000, log_level="warning" # 减少日志输出 ) server = uvicorn.Server(config) # 在后台启动服务器 server_task = asyncio.create_task(server.serve()) # 等待服务器启动 await asyncio.sleep(2) # 测试连接速度 async with aiohttp.ClientSession() as session: # 测试创建WebSocket客户端 start_time = time.time() url = "http://127.0.0.1:8000/api/v1/websocket/clients" data = { "name": "test_client", "url": "ws://localhost:8080/ws", "heartbeat_interval": 60 } async with session.post(url, json=data) as response: end_time = time.time() response_time = end_time - start_time if response.status == 200: result = await response.json() logger.info(f"WebSocket客户端创建成功,响应时间: {response_time:.3f}秒") logger.info(f"响应内容: {result}") else: error_text = await response.text() logger.error(f"WebSocket客户端创建失败,状态码: {response.status}") logger.error(f"错误信息: {error_text}") return False # 停止服务器 server.should_exit = True await server_task logger.info("WebSocket连接速度测试完成") return True except Exception as e: logger.error(f"WebSocket连接速度测试失败: {e}") import traceback logger.error(f"异常堆栈: {traceback.format_exc()}") return False if __name__ == "__main__": success = asyncio.run(test_websocket_connection_speed()) if success: print("✅ WebSocket连接速度测试成功") sys.exit(0) else: print("❌ WebSocket连接速度测试失败") sys.exit(1)