重连机制与重连互踢
自动重连机制
SDK 内已实现自动重连机制,一旦连接成功,SDK 的重连机制将立即开始生效,并接管所有的重连处理。当因为网络原因断线时,SDK 内部会尝试重新建立连接,不需要您做额外的连接操作。
可能导致 SDK 断线重连的异常情况如下:
因为客户端 SDK 和融云服务端之间存在连接保活机制,一旦因如果网络太差或无网络导致心跳超时,SDK 就会触发重连操作,尝试重连直到连接成功。
注意
一旦触发连接错误的回调,SDK 将退出重连机制。请根据具体的状态码自行处理。
重连时间间隔
SDK 尝试重连时,时间间隔是 5s。
主动退出重连机制
应用主动断开连接后,SDK 将退出重连机制,不再尝试重连。
重连互踢策略(仅限 Electron)
注意
用户级别的重连互踢策略功能仅限在 Electron 解决方案 中使用。Web 端应用不支持设置重连互踢策略。
重连互踢策略用于控制 SDK 自动重连成功时是否需要下线的设备。
即时通讯业务默认仅允许同一用户账号在单台桌面端设备上登录。后登录的桌面端设备一旦连接成功,则自动踢出之前登录的设备。在部分情况下,SDK 的重连机制可能会导致后登录设备无法正常在线。
例如,默认的重连互踢策略可能导致以下情况:
- 用户张三尝试在桌面端设备 A 上登录,但因 A 设备网络不稳定导致未连接成功,触发了 SDK 的自动重连机制。
- 用户此时尝试换到桌面端设备 B 上登录。B 设备连接成功,且用户可通过 B 设备正常使用即时通讯业务。
- A 设备网络稳定之后,SDK 重连成功。因此时 A 设备为后上线设备,导致 B 设备被踢出。
修改 App 用户的重连互踢策略
如果 App 用户希望在以上场景中将重连成功 的 A 设备下线,同时保持 B 设备登录,可以通过修改自己的重连互踢策略实现。设置断线重连时是否踢出重连设备需要在建立连接时进行设置。
使用该接口前,您须在[融云控制台](https://console.rongcloud.cn/agile/formwork/baseService/index),通过**应用配置**>**IM 服务**>免费基础功能>其他,开启允许 SDK 修改重连互踢策略。
调用示例
RongIMLib.connect('<Your-Token>', true).then(res => {
if (res.code === RongIMLib.ErrorCode.SUCCESS) {
console.log('连接成功, 连接用户 id 为: ', res.data.userId);
} else {
console.warn('连接失败, code:', res.code)
}
})
参数说明
参数 | 类型 | 说明 |
---|---|---|
reconnectKickEnable | boolean | 是否踢出正在重连的设备。详见下方 reconnectKickEnable 参数详细说明。 |
reconnectKickEnable
参数详细说明:
-
设置
reconnectKickEnable
为true
:如果重连时发现已有别的桌面端设备在线,将不再重连,不影响已正常登录的桌面端设备。
-
设置
reconnectKickEnable
为false
:如果重连时发现已有别的桌面端设备在线,将踢出已在线的桌面端设备,使当前设备上线。