#!/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)