浏览 OpenIMSDK 指南
Guides

核心概念

梳理普通用户、APP 管理员、通知号、群组等核心模型。

复制

用户类型

OpenIMSDK 包含三类用户身份:普通用户APP 管理员系统通知号

普通用户

  • 主要字段:userIDfaceURLnicknameex
  • 用途:普通用户通常由外部业务系统导入,代表使用 OpenIMClientSDK 登录的终端用户。ex 用于保存业务扩展信息。

APP 管理员

  • 权限:拥有服务端管理权限。
  • 用途:业务后端以 APP 管理员身份调用 REST API,管理 OpenIMServer 中的资源。
  • 内置管理员:OpenIMServer 内置一个 userIDimAdmin 的 APP 管理员。

系统通知号

  • 功能:APP 管理员可以使用系统通知号发送通知消息,不受好友关系和群组权限约束。REST API 可以创建通知号并更新其昵称和头像。
  • 用户体验:客户端收到消息后,会在会话中显示通知号的头像和昵称。

群组

群组类型

OpenIMServer 当前使用统一的群组模型,不区分小群和大群类型。

群成员上限

单个群组最多支持 100,000 名成员。

加入群组

用户可以通过三种方式加入群组:

  1. 群成员邀请:现有成员邀请新成员直接加入。
  2. 提交入群申请:用户提交申请,等待群主或管理员审批。
  3. 开放加入:群组允许任何用户无需审批直接加入。

群组角色与权限

群组内有三种角色,权限从高到低依次为:

  1. 群主
  2. 管理员
  3. 普通成员

群主

群主拥有最高权限,可以:

  • 设置多个管理员;管理员之间权限相同。
  • 解散群组。
  • 将群主身份转让给其他成员。
  • 处理入群申请。
  • 修改群公告、群名称等群组资料。

群主退出群组前必须先转让群主身份。

管理员

管理员的权限低于群主,可以:

  • 处理入群申请。
  • 修改群公告、群名称等群组资料。
  • 移除或禁言普通成员。

管理员之间没有上下级关系。

普通成员

普通成员可以参与群聊、查看群公告和发送消息。

消息与通知

消息

消息是由用户或系统发送的实际内容,包括文本、图片、视频和其他媒体。OpenIMClientSDK 负责在客户端创建、接收、存储和展示消息。

通知

通知用于同步由用户或系统操作引起的状态变化,例如群成员变化和好友关系变化。一部分通知需要展示给用户,例如入群通知和系统公告;另一部分只用于客户端状态同步,不作为普通消息展示。

消息推送

在线推送

用户在线时,OpenIMServer 会通过 OpenIMClientSDK 维护的长连接发送消息:

  • 实时性:消息可以立即到达接收端。
  • 可靠性:长连接负责承载实时消息和状态通知。

离线推送

用户离线或应用进程被终止后,OpenIMClientSDK 长连接无法继续接收消息,需要借助第三方推送服务:

  • iOS 通常使用 APNs。
  • 中国境内环境通常使用个推等厂商服务。
  • 中国境外环境通常使用 Firebase Cloud Messaging。

消息存储类型

本地消息

除纯 JavaScript SDK 外,OpenIMClientSDK 会按需拉取消息,并将已经同步的消息保存在本地数据库中。这些消息统称为本地消息。

多端同步消息

用户从设备 A 发送消息后,消息同步到同一账号的设备 B,这类消息称为多端同步消息。

离线消息

用户离线期间收到的消息,会在重新登录后从 OpenIMServer 同步并按需加载。

漫游消息

用户更换设备或重新安装应用后,OpenIMClientSDK 从 OpenIMServer 拉取并同步历史消息,这些消息称为漫游消息。

对象存储

对象存储用于保存图片、音频、视频和文件等非结构化数据。每个对象包含数据、可扩展元数据和全局唯一的 Key。

发送文件、图片或视频消息时,OpenIMClientSDK 通常先将文件上传到配置的对象存储,取得 URL 后再发送消息。部署方需要为 OpenIMServer 配置 MinIO、OSS、COS、S3 等受支持的对象存储服务。