重连逻辑
功能描述
在 v2.6.0 及以上版本中,SDK 内已实现重连机制,在应用的整个生命周期内,开发者只需要调用一次 RongIMClient.connect() 建立连接。当网络异常中断时,SDK 内部会尝试重新建立连接,业务层无需进行其他操作。当业务层使用 RongIMClient.disconnect() 主动断开连接后,希望以断开前的身份重新进行连接时,可使用 RongIMClient.reconnect() 进行重新连接。
在 v2.5.x 版本中 SDK 内无重连机制,重新连接调用时机:
- 网络不好,导致连接频繁断开后不会重新连接。
- 长时间断网后,IM不会重新连接。
- 交互连接频繁断开(网络环境:WIFI 或者联通、移动 3/4G ),交替切换网络后,IM不会重新连接。
在 v2.9.4 及以上版本中调用 RongIMClient.reconnect() 前需先调用 RongIMClient.disconnect() 方法,否则会报错误 35007。
参数说明
参数 | 类型 | 必填 | 说明 | 最低版本 | 废弃版本 |
---|---|---|---|---|---|
callback | Object | 是 | 重连回调对象 | 2.3.3 | |
callBack.onSuccess | Function | 是 | 连接成功回调,会返回 token 对应的 userId | 2.3.3 | |
callBack.onError | Function | 是 | 连接失败回调,请您检查客户端初始化使用的 AppKey 和获取 token 用的 AppKey 是否一致 | 2.3.3 | |
callBack.onTokenIncorrect | Function | 是 | token 无效回调,建议排查 控制台 是否设置了 Token 有效期,或重新获取 Token 再建立连接 | 2.3.3 | |
Object | 否 | 重连配置 | 2.3.3 | 2.6.0 |
代码示例
var callback = {
onSuccess: function(userId) {
console.log('reconnect success. ' + userId);
},
onTokenIncorrect: function() {
console.log('token 无效');
},
onError: function(errorCode) {
console.log(errorCode);
}
};
RongIMClient.reconnect(callback);