55 lines
1.7 KiB
Python
55 lines
1.7 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
测试WebSocket连接的脚本
|
||
模拟前端连接
|
||
"""
|
||
import asyncio
|
||
import websockets
|
||
import json
|
||
import sys
|
||
import os
|
||
|
||
# 设置环境变量
|
||
os.environ.setdefault('SECRET_KEY', 'your-secret-key-change-in-production')
|
||
|
||
async def test_streamer_connection():
|
||
"""测试主播WebSocket连接"""
|
||
# 使用有效的token(从日志中复制的)
|
||
token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NjYzOTcyMTEsInN1YiI6IjEwIn0.Miublr4D4W5_xS80eNb9mEMQlH-k9fh2Vc4Ndjf8GPQ"
|
||
streamer_id = 10
|
||
|
||
uri = f"ws://localhost:8000/socket.io/?role=streamer&id={streamer_id}&token={token}"
|
||
|
||
try:
|
||
print(f"尝试连接到: {uri}")
|
||
async with websockets.connect(uri) as websocket:
|
||
print("✅ WebSocket连接成功!")
|
||
|
||
# 等待消息
|
||
for i in range(10):
|
||
try:
|
||
response = await asyncio.wait_for(websocket.recv(), timeout=3.0)
|
||
print(f"📥 收到消息 {i+1}: {response}")
|
||
except asyncio.TimeoutError:
|
||
print(f"⏱️ 3秒内未收到消息 {i+1}(继续等待)")
|
||
continue
|
||
|
||
print("\n✅ 测试完成!")
|
||
return True
|
||
|
||
except websockets.exceptions.InvalidURI as e:
|
||
print(f"❌ 无效的URI: {e}")
|
||
return False
|
||
except websockets.exceptions.ConnectionRefused as e:
|
||
print(f"❌ 连接被拒绝: {e}")
|
||
return False
|
||
except Exception as e:
|
||
print(f"❌ 连接错误: {type(e).__name__}: {e}")
|
||
import traceback
|
||
traceback.print_exc()
|
||
return False
|
||
|
||
if __name__ == "__main__":
|
||
result = asyncio.run(test_streamer_connection())
|
||
sys.exit(0 if result else 1)
|