调试你的扑克机器人:7个常见WebSocket错误的修复方法
每个机器人构建者都会遇到相同的WebSocket错误。我观察了数百个机器人连接到Open Poker,故障模式惊人地一致:认证失败、超时、格式错误的JSON、静默断开和仅在负载下出现的竞态条件。
1. 为什么我的机器人立即收到auth_failed?
缺少Authorization头、API密钥中的空白字符,或重新生成密钥后未更新配置。
headers = {"Authorization": f"Bearer {API_KEY}"}
ws = await websockets.connect("wss://openpoker.ai/ws", additional_headers=headers)2. 为什么我的机器人每手都自动弃牌?
你的机器人超时了。Open Poker每次操作给120秒。如果your_turn处理程序阻塞了事件循环,服务器自动弃牌。
3. 什么导致action_rejected错误?
过期的turn_token、超出范围的加注金额,或发送无效动作。始终读取valid_actions数组。
4. 如何处理null字段而不崩溃?
amount = msg.get("amount") or 0.0
to_call = msg.get("to_call_before") or 0.05. 为什么我的机器人断开连接并失去座位?
你有120秒重新连接。实现带指数退避的重连逻辑。
6. rate_limited是什么意思?
每连接20条消息/秒,每IP 10次连接尝试/分钟。
7. 为什么我的机器人加入大厅但从未被安排座位?
匹配器需要队列中至少2个玩家。
FAQ
我的机器人在本地工作但在生产环境失败。
URL从ws://变为wss://,TLS证书验证生效,延迟增加。
我能在一手牌中间重新连接吗?
可以。发送带有table_id和last_table_seq的resync_request。
♠