IM 连接相关

更新时间: 2024/03/14 18:45:31

本文介绍如何管理 IM 实例与 IM 服务端的长连接,即 IM 的登录状态。

功能介绍

IM 实例初始化的同时会与 IM 服务端建立长连接,长连接成功建立则 IM 登录成功。若登录成功,可在初始化时设置的onconnect回调中得到相应的登录信息。若登录失败,可在ondisconnect回调中获得相应的失败信息。

换言之,仅首次登录需要在初始化时执行,后续的登出和重新登录,都需调用相应的接口实现,具体见下文。

实现方法

登出 IM

初始化 SDK 后,如果与 IM 服务端成功建立长连接(收到onconnect回调函数),可以调用nim.disconnect方法登出 IM。

  • 调用 nim.disconnect后,建议再调用destroy方法销毁实例,避免再次重连获取不到完整的最近会话。
  • 登出 IM 后可以调用nim.connect方法重新登录 IM。

销毁 IM 实例

NIM SDK 实例均为单例模式,但可以调用destroy方法销毁内存中记录的 SDK 实例,同时断开长连接。销毁后,内存消息记录及时间戳将清除,方便开发者做到干净重连。

javascript  var nim = NIM.getInstance({...})
  // 清除实例
  nim.destroy({
    done: function (err) {
      console.log('实例已被完全清除')
    }
  })

手动调用 nim.disconnect 方法或 nim.destroy 方法后,会直接触发 SDK 实例的 ondisconnect 回调函数,但此时长连接并未真正销毁。只有在 done 回调函数触发的时候,才能保证长连接真正销毁(onclose 状态)。这点对于微信小程序尤其重要,因为小程序只有两条长连接可用,如果在前一条长连接没有处于onClose状态,会占用长连接资源,导致反复重连或者被踢下线。

重新登录 IM

调用nim.connect方法可实现在登出后重新登录 IM。

该方法必须在调用nim.disconnect方法登出 IM 后,才能调用。

相关文档

此文档是否对你有帮助?
有帮助
去反馈
  • 功能介绍
  • 实现方法
  • 登出 IM
  • 销毁 IM 实例
  • 重新登录 IM
  • 相关文档