starlette.websockets.WebSocketDisconnect

websockets.exceptions.ConnectionClosedOK : 这是websockets库抛出的异常,意味着WebSocket连接正常关闭。具体来说,错误码1001(going away)通常表示客户端离开了,比如用户关闭了浏览器窗口。

uvicorn.protocols.utils.ClientDisconnected : 这个异常是uvicorn抛出的,基于上一个异常。它表明客户端断开了连接。

starlette.websockets.WebSocketDisconnect : 最终,这导致了Starlette框架抛出WebSocketDisconnect异常,错误码1006指示了一个异常关闭,这通常意味着连接由于未知原因被终止,可能是由于网络问题或客户端突然断开。

这些异常表明在尝试通过WebSocket发送消息时,连接已经关闭。这可能是因为客户端意外断开连接,或者其他原因导致连接不稳定。

处理此类问题的一种方法是确保在尝试发送消息之前,连接确实是开启状态。此外,可以在服务器端添加异常处理来优雅地处理断开连接的情况。例如,你可以捕获WebSocketDisconnect异常,并执行一些清理操作或重连逻辑

from starlette.websockets import WebSocketDisconnect

async def websocket_endpoint(websocket):

try:

假设这里是你的WebSocket处理逻辑

await websocket.accept()

while True:

data = await websocket.receive_text()

await websocket.send_text(f"Message text was: {data}")

except WebSocketDisconnect:

print("WebSocket connection was closed")

这里可以添加一些清理代码或尝试重新连接的逻辑

相关推荐
vortex53 小时前
Debian 包管理全指南:从底层 dpkg 到高层 apt 及其日志追踪
linux·运维·debian
计算机安禾4 小时前
【Linux从入门到精通】第17篇:日志系统——系统运行的黑匣子
linux·运维·服务器
l1t4 小时前
DeepSeek辅助解决windows 11 wsl2中Linux版Dbeaver显示中文
linux·运维·windows
pengyi8710156 小时前
独享IP+动态IP结合核心逻辑,破解稳定与灵活的矛盾
linux·运维·网络
阿祖zu6 小时前
本地到生产,解决 AI 全栈最后一公里——构建&部署&运维
运维·架构·aigc
MAVER1CK10 小时前
Install VNC in Docker container
运维·docker·容器
lcj092466611 小时前
数据中心运维升级|磁控U位硬件联动DCIM,破解U位管控难题
运维·人工智能·经验分享·信息可视化
薛定谔的悦11 小时前
光伏逆变器多协议接入——Modbus RTU 在新能源设备集成中的实践
linux·运维·服务器·bms
bksczm12 小时前
Linux之基础开发工具(Ubuntu)之编译器
linux·运维·服务器
何中应12 小时前
Ansible安装&使用
运维·自动化·ansible·运维开发·自动化运维