WuKongIMAndroidSDK/.cursor/rules/connection-management.mdc
2025-05-24 17:17:03 +08:00

45 lines
1.1 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
description:
globs:
alwaysApply: false
---
# 连接管理机制
## 连接状态流转
连接状态在 [WKConnection.java](mdc:wkim/src/main/java/com/xinbida/wukongim/message/WKConnection.java) 中管理,遵循以下规则:
### 有效的状态转换
- 失败状态 -> 连接中/成功
- 连接中 -> 成功/失败/无网络
- 成功 -> 同步消息/被踢/失败
- 同步消息 -> 成功/失败
- 无网络 -> 连接中/失败
### 关键同步点
所有状态转换都需要通过 `connectionLock` 同步锁保护:
```java
synchronized (connectionLock) {
// 状态转换操作
}
```
## 重连机制
重连策略采用指数退避算法:
- 基础延迟1秒
- 最大延迟32秒
- 最大重试次数5次
## 连接关闭处理
连接关闭流程:
1. 使用 `isClosing` 原子变量防止重复关闭
2. 设置连接标记防止重连
3. 清理连接资源
4. 触发超时强制关闭
## 异常处理
主要在 [ConnectionClient.java](mdc:wkim/src/main/java/com/xinbida/wukongim/message/ConnectionClient.java) 中处理:
- 连接异常
- 连接超时
- 心跳超时
- 空闲超时