python
network_error
ai_generated
true
WebSocket 连接意外关闭错误
websockets.exceptions.ConnectionClosedError: WebSocket connection closed unexpectedly
ID: python/starlette-websocket-disconnect-error
80%修复率
84%置信度
0证据数
2024-11-05首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| 3.10 | active | — | — | — |
| 3.11 | active | — | — | — |
根因分析
Starlette WebSocket 连接因网络问题或客户端断开而意外关闭
English
Starlette WebSocket 连接因网络问题或客户端断开而意外关闭
解决方案
-
90% 成功率 捕获异常并优雅地关闭连接
try: await websocket.receive_text() except WebSocketDisconnect: await websocket.close() -
85% 成功率 实现心跳机制检测连接状态
async def heartbeat(): while True: await asyncio.sleep(30) await websocket.send_json({'type': 'ping'})
无效尝试
常见但无效的做法:
-
忽略异常并继续发送消息
95% 失败
连接已关闭,发送消息会引发更多错误
-
无限重试连接而不检查状态
80% 失败
可能导致无限循环和资源浪费