跳到主要内容

版本:5.X

重连机制与重连互踢

自动重连机制

SDK 内已实现自动重连机制,一旦连接成功,SDK 的重连机制将立即开始生效,并接管所有的重连处理。当因为网络原因断线时,SDK 内部会尝试重新建立连接,不需要您做额外的连接操作。

可能导致 SDK 断线重连的异常情况如下:

因为客户端 SDK 和融云服务端之间存在连接保活机制,一旦因如果网络太差或无网络导致心跳超时,SDK 就会触发重连操作,尝试重连直到连接成功。

注意

一旦触发连接错误的回调,SDK 将退出重连机制。请根据具体的状态码自行处理。

重连时间间隔

SDK 尝试重连时,时间间隔是 5s。

主动退出重连机制

应用主动断开连接后,SDK 将退出重连机制,不再尝试重连。

重连互踢策略(仅限 Electron)

注意

用户级别的重连互踢策略功能仅限在 Electron 解决方案 中使用。Web 端应用不支持设置重连互踢策略。

重连互踢策略用于控制 SDK 自动重连成功时是否需要下线的设备。

即时通讯业务默认仅允许同一用户账号在单台桌面端设备上登录。后登录的桌面端设备一旦连接成功,则自动踢出之前登录的设备。在部分情况下,SDK 的重连机制可能会导致后登录设备无法正常在线。

例如,默认的重连互踢策略可能导致以下情况:

  1. 用户张三尝试在桌面端设备 A 上登录,但因 A 设备网络不稳定导致未连接成功,触发了 SDK 的自动重连机制。
  2. 用户此时尝试换到桌面端设备 B 上登录。B 设备连接成功,且用户可通过 B 设备正常使用即时通讯业务。
  3. 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)
}
})

参数说明

参数类型说明
reconnectKickEnableboolean是否踢出正在重连的设备。详见下方 reconnectKickEnable 参数详细说明

reconnectKickEnable 参数详细说明

  • 设置 reconnectKickEnabletrue

    如果重连时发现已有别的桌面端设备在线,将不再重连,不影响已正常登录的桌面端设备。

  • 设置 reconnectKickEnablefalse

    如果重连时发现已有别的桌面端设备在线,将踢出已在线的桌面端设备,使当前设备上线。