监听连接状态
客户端 SDK 为 App 提供了 IM 连接状态监听器。通过监听 IM 连接状态的变化,App 可以进行不同业务处理,或在页面上给出提示。
连接状态监听器说明
接口定义如下
// 见 IMEngine.ts
public setConnectionStatusListener(listener: (status: ConnectionStatus) => void): void
当连接状态发生变化时,SDK 会将当前的连接状态回调给开发者。各状态的具体说明请参考下表。
状态名称 | 说明 | 处理方法 |
---|---|---|
Idle | 等待状态 | 无 |
Connecting | 连接中 | 无 |
Connected | 连接 成功 | 无 |
DisconnectNetworkUnavailable | 设备无网 | 当网络恢复后,SDK 自动连接 |
DisconnectUserLogout | 调用了 disconnect 接口,主动退出 | 无 |
DisconnectLicenseExpired | License 授权过期(私有云专属) | 无 |
DisconnectIllegalProtocolVersion | SDK 信令版本和服务信令版本不一致 | 一般不会出现该问题,如果出现请联系融云 |
DisconnectIdReject | 客户端(移动端 TCP 连接建立时)info 字段格式错误 | 一般不会出现该问题,如果出现请联系融云 |
DisconnectPlatformUnavailable | 不支持的平台类型,一般小程序或 PC 未开通 | 一般不会出现该问题,如果出现请联系融云 |
DisconnectTokenIncorrect | Token 无法解析,或 Token 已过期,请更换 Token 重新连接 | 当发生该错误的时候检查一下 APP 使用的 appKey 和 APP Server 使用的 appKey 是否相同 |
DisconnectNotAuthorized | 触发了防黑产规则 | 请 APP 服务自查 |
DisconnectPackageNameInvalid | 包名不合法(移动端使用) | 一般不会出现该问题,如果出现请联系融云 |
DisconnectAppBlockOrDelete | 该 AppKey 已经封禁或删除 | 请自行检查融云管理后台该 AppKey 的状态 |
DisconnectUserBlocked | 该用户 ID 已经被封禁 | 请自行检查融云管理后台该用户 ID 的状态 |
DisconnectUserKicked | 用户被同账号其他端踢下线 | 给用户提示被踢下线 |
DisconnectTokenExpired | Token 已过期 | 请重新获取 Token 再连接 |
DisconnectDeviceError | Token 中携带 deviceId 时,检测 Token 中 deviceId 与链接设备 deviceId 不一致 | 一般不会出现该问题,如果出现请联系融云 |
DisconnectHostnameError | Web 端设置安全域名后,连接端域名不在安全域名范围内 | 一般不会出现该问题,如果出现请联系融云 |
DisconnectOtherDeviceLogin | 开启 禁止把已在线客户端踢下线 开关后,该错误码标识已有同类型端在线 | |
DisconnectConcurrentLimitError | 连接总数量超过服务设定的并发限定值(私有云专属) | 无 |
DisconnectClusterError | 客户端连错环境,引发连接拒绝;如使用开发环境 AppKey 连接到生产环境 | APP 排查使用的 appkey 所属环境 |
DisconnectAppAuthFailed | 开启 AppServer 联合鉴权功能后,到 AppServer 认证失败 | 一般不会出现该问题,如果出现请联系融云 |
DisconnectOneTimePasswordUsed | 一次性 Token 已经被使用过 | 重新获取 Token 进行连接 |
DisconnectPlatformError | Token 绑定的平台与登录平台不符 | 请自行检查融云管理后台该 token 的状态 |
DisconnectUserDeleteAccount | 用户账号已销户,不再进行连接 | 请自行检查融云管理后台该账号的状态 |
DisconnectConnectionTimeout | 连接超时 | 需要调用 connect 接口重新进行连接,一般是设备的网络原因 |
DisconnectDatabaseOpenFailed | 数据库打开失败 | 由用户决定如何处理,用户可以将数据库备份之后再重连 |
移除连接状态监听器
当不需要监听时,将设置的监听器移除。
// 移除连接状态监听器
IMEngine.getInstance().setConnectionStatusListener(null);