跳到主要内容

监听连接状态

客户端 SDK 为 App 提供了 IM 连接状态监听器。通过监听 IM 连接状态的变化,App 可以进行不同业务处理,或在页面上给出提示。

连接状态监听器说明

接口定义如下

// 见 IMEngine.ts
public setConnectionStatusListener(listener: (status: ConnectionStatus) => void): void

当连接状态发生变化时,SDK 会将当前的连接状态回调给开发者。各状态的具体说明请参考下表。

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

移除连接状态监听器

当不需要监听时,将设置的监听器移除。

// 移除连接状态监听器
IMEngine.getInstance().setConnectionStatusListener(null);