test_websocket_server.py
1.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/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)