连接

大约 3 分钟

连接

应用客户端成功连接到环信服务器后,才能使用环信即时通讯 SDK 的收发消息等功能。

你调用 login 方法登录后,客户端 SDK 会自动连接环信服务器。关于登录详情,请参见登录文档

监听连接状态

你可以通过注册连接监听确认连接状态。

ChatClient.getInstance().addConnectionListener({
  // SDK 成功连接到 IM 服务器的通知。
  onConnected(): void {
    console.log("onConnected");
  },
  // SDK 和 IM 服务器断开连接的通知。
  // 断开连接时底层不一定会登出。
  onDisconnected(): void {
    console.log("onDisconnected");
  },
  // Token 即将过期的通知。
  // 自 1.11.0 版本,SDK 会在 Token 有效期达到 80% 时触发该回调。
  onTokenWillExpire(): void {
    console.log("onTokenWillExpire");
  },
  // 应用程序的日活跃用户数量(DAU)或月活跃用户数量(MAU)达到上限时通知。
  // 服务器主动断开连接。
  onAppActiveNumberReachLimit(): void {
    console.log("onAppActiveNumberReachLimit");
  },
  // 其他设备登录通知。
  // 服务器主动断开连接。
  onUserDidLoginFromOtherDevice(deviceName?: string): void {
    console.log("onUserDidLoginFromOtherDevice", deviceName);
  },
  // 用户在其它设备登录。
  // 当前用户被服务器断开。
  onUserDidLoginFromOtherDeviceWithInfo(params: {
    deviceName?: string;
    ext?: string;
  }): void {
    console.log("onUserDidLoginFromOtherDeviceWithInfo", params);
  },
   // 登录设备数量超限通知。服务器主动断开连接。
  onUserDidRemoveFromServer(): void {
    console.log("onUserDidRemoveFromServer");
  },
  // 被服务器禁止连接通知。服务器主动断开连接。
  onUserDidForbidByServer(): void {
    console.log("onUserDidForbidByServer");
  },
  // 用户密码变更通知。服务器主动断开连接
  onUserDidChangePassword(): void {
    console.log("onUserDidChangePassword");
  },
  // 登录设备数量超限通知。服务器主动断开连接。
  onUserDidLoginTooManyDevice(): void {
    console.log("onUserDidLoginTooManyDevice");
  },
  // 被其他设备踢掉通知。服务器主动断开连接。
  onUserKickedByOtherDevice(): void {
    console.log("onUserKickedByOtherDevice");
  },
  // 鉴权失败通知。典型触发通知场景:token 过期、token 验证失败。
  // 服务器主动断开连接。
  onUserAuthenticationFailed(): void {
    console.log("onUserAuthenticationFailed");
  },
  // 结束接收离线消息的时候触发。
  onOfflineMessageSyncFinish(): void {
    console.log("onOfflineMessageSyncFinish");
  },
  // 开始接收离线消息的时候触发。
  onOfflineMessageSyncStart(): void {
    console.log("onOfflineMessageSyncStart");
  },
} as ChatConnectEventListener);

自动重连

登录后,如果由于网络信号弱、切换网络等引起的连接中断,SDK 会自动尝试重连。重连成功或者失败时分别会收到 onConnectedonDisconnected 通知。

不过,SDK 在以下情况下会停止自动重连。你需要调用 login 方法登录。

  • 用户调用了 SDK 的登出方法 logout 主动退出登录。
  • 登录时鉴权错误,例如, token 无效(错误码 104)或已过期(错误码 108)。
  • 用户在其他的设备上更改了密码,导致此设备上自动登录失败,提示错误码 216。
  • 用户的账号被从服务器端删除,提示错误码 207。
  • 用户在另一设备登录,将当前设备上登录的用户踢出,提示错误码 206。
  • 用户登录设备数量超过限制,提示错误码 214。
  • 应用程序的日活跃用户数量(DAU)或月活跃用户数量(MAU)达到上限,提示错误码 8。
  • 开启多设备服务后,用户在其他设备上通过调用 API 或者环信控制台将当前设备登录的 ID 强制退出登录(错误码 217)。
上次编辑于: