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")

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

相关推荐
C_心欲无痕13 小时前
网络相关 - Ngrok内网穿透使用
运维·前端·网络
宇钶宇夕13 小时前
CoDeSys入门实战一起学习(四):应用程序运行、监控与调试
运维·自动化
zhyf11913 小时前
零刻AI Max395(Ubuntu 24.04)AMD 显卡监控工具(amdgpu_top)部署手册
linux·运维·ubuntu
谢平康13 小时前
ssh-copy-id 后还是一直需要密码登录的一个解决办法
运维·ssh
zhangdawei83813 小时前
英伟达GB200,GB300和普通服务器如dell R740xd有什么区别?
运维·服务器·人工智能
释怀不想释怀13 小时前
Docker(项目部署)
运维·docker·容器
御控工业物联网14 小时前
御控远程监控智慧运维系统
运维·物联网·边缘计算·数据采集·远程监控·mqtt协议·工业智能网关
ZFB000114 小时前
【麒麟桌面系统】V10-SP1 2503 系统知识——设置面板无法打开
linux·运维·kylin
2301_7809438414 小时前
linux 对文件打补丁(Patch)
linux·运维·服务器
ICT董老师14 小时前
通过kubernetes部署nginx + php网站环境
运维·nginx·云原生·容器·kubernetes·php