重连机制与重连互踢
自动重连机制
SDK 内已实现自动重连机制,一旦连接成功,SDK 的重连机制将立即开始生效,并接管所有的重连处理。当因为网络原因断线时,SDK 内部会尝试重新建立连接,不需要您做额外的连接操作。
可能导致 SDK 断线重连的异常情况如下:
- 弱网环境:可能出现 SDK 不停重连的情况。因为客户端 SDK 和融云服务端之间存在连接保活机制,一旦因如果网络太差导致心跳超时,SDK 就会触发重连操作,尝试重连直到连接成功。
- 无网环境:SDK 的重连机制会暂停。一旦网络恢复,SDK 会进行重连操作。
提示
一旦触发连接错误的回调,SDK 将退出重连机制。请根据具体的状态码自行处理。
重连时间间隔
SDK 尝试重连时,时间间隔逐次变大,分别是 0.05s(5.6.2 之前为 0s), 0.25s, 0.5s, 1s, 2s, 4s, 8s, 16s, 32s。之后每 64s 重试一次。
当 APP 切换到前台或者网络状态发生变化,重连时间会按照上面的时间间隔从头开始,保证这种情况下能尽快的连接成功。
主动退出重连机制
应用主动断开连接后,SDK 将退出重连机制,不再尝试重连。
重连互踢策略
重连互踢策略用于控制 SDK 自动重连成功时是否需要下线的设备。
即时通讯业务默认仅允许同一用户账号在单台移动端设备上登录。后登录的移动端设备一旦连接成功,则自动踢出之前登录的设备。在部分情况下,SDK 的重连机制可能会导致后登录设备无法正常在线。
例如,默认的重连互踢策略可能导致以下情况:
- 用户张三尝试在移动设备 A 上登录,但因 A 设备网络不稳定导致未连接成功,触发了 SDK 的自动重连机制。
- 用户此时尝试换到移动设备 B 上登录。B 设备连接成功,且用户可通过 B 设备正常使用即时通讯业务。
- A 设备网络稳定之后,SDK 重连成功。因此时 A 设备为后上线设备,导致 B 设备被踢出。
修改 App 用户的重连互踢策略
如果 App 用户希望在以上场景中将重连成功的 A 设备下线,同时保持 B 设备登录,可以通过修改自己的重连互踢策略实现。
提示
IMKit 不直接提供对应 API。如有需要,请调用 IMLib SDK 的 setReconnectKickEnable
方法。详见 IMLib 文档 重连机制与重连互踢。