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

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

相关推荐
嵌入式郑工4 小时前
LINUX驱动开发: 设备和驱动是怎么匹配的?
linux·运维·服务器
郭式云源生法则5 小时前
归档及压缩、重定向与管道操作和综合使用,find精确查找、find处理查找结果、vim高级使用、vimdiff多文件使用
linux·运维·服务器
getExpectObject()5 小时前
【jenkins】构建安卓
运维·jenkins
小池先生6 小时前
服务请求出现偶发超时问题,经查服务本身没问题,问题出现在nginx转发。
运维·服务器·nginx
java_logo6 小时前
vllm-openai Docker 部署手册
运维·人工智能·docker·ai·容器
MANONGMN6 小时前
Linux 通配符与正则表达式(含实战案例+避坑指南)
linux·运维·正则表达式
勤源科技6 小时前
运维知识图谱的构建与应用
运维·人工智能·知识图谱
jiyuzzz6 小时前
Docker部署WordPress及相关配置
运维·docker·容器
还不秃顶的计科生9 小时前
linux下conda未安装的解决方法(离线安装linux下的conda)
linux·运维·服务器
爱学习饼9 小时前
CentOS下安装配置JDK24和tomcat11
linux·运维·centos