test_websocket_server.py 1.64 KB
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# AIfeng/2024-12-19 20:30:00

import asyncio
import json
import time
import logging
from aiohttp import web, WSMsgType
import aiohttp_cors

# 导入WebSocket相关模块
from core.unified_websocket_manager import UnifiedWebSocketManager
from core.websocket_router import WebSocketRouter

# 配置日志
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

# 创建WebSocket路由器
websocket_router = WebSocketRouter()

# WebSocket处理器
async def websocket_handler(request):
    """处理WebSocket连接"""
    # 初始化路由器(如果尚未初始化)
    if not websocket_router.is_initialized:
        await websocket_router.initialize()
    
    # 直接使用websocket_router的处理器
    return await websocket_router.websocket_handler(request)

# 创建应用
def create_app():
    app = web.Application()
    
    # 添加路由
    app.router.add_get("/ws", websocket_handler)
    app.router.add_static('/', path='web')
    
    # 配置CORS
    cors = aiohttp_cors.setup(app, defaults={
        "*": aiohttp_cors.ResourceOptions(
            allow_credentials=True,
            expose_headers="*",
            allow_headers="*",
        )
    })
    
    # 为所有路由配置CORS
    for route in list(app.router.routes()):
        cors.add(route)
    
    return app

if __name__ == '__main__':
    app = create_app()
    logger.info('Starting WebSocket test server on http://localhost:8000')
    logger.info('WebSocket endpoint: ws://localhost:8000/ws')
    logger.info('Test page: http://localhost:8000/webrtcapichat.html')
    
    web.run_app(app, host='0.0.0.0', port=8000)