核心概念
梳理普通用户、APP 管理员、通知号、群组等核心模型。
用户类型
OpenIMSDK 包含三类用户身份:普通用户、APP 管理员和系统通知号。
普通用户
- 主要字段:
userID、faceURL、nickname和ex。 - 用途:普通用户通常由外部业务系统导入,代表使用 OpenIMClientSDK 登录的终端用户。
ex用于保存业务扩展信息。
APP 管理员
- 权限:拥有服务端管理权限。
- 用途:业务后端以 APP 管理员身份调用 REST API,管理 OpenIMServer 中的资源。
- 内置管理员:OpenIMServer 内置一个
userID为imAdmin的 APP 管理员。
系统通知号
- 功能:APP 管理员可以使用系统通知号发送通知消息,不受好友关系和群组权限约束。REST API 可以创建通知号并更新其昵称和头像。
- 用户体验:客户端收到消息后,会在会话中显示通知号的头像和昵称。
群组
群组类型
OpenIMServer 当前使用统一的群组模型,不区分小群和大群类型。
群成员上限
单个群组最多支持 100,000 名成员。
加入群组
用户可以通过三种方式加入群组:
- 群成员邀请:现有成员邀请新成员直接加入。
- 提交入群申请:用户提交申请,等待群主或管理员审批。
- 开放加入:群组允许任何用户无需审批直接加入。
群组角色与权限
群组内有三种角色,权限从高到低依次为:
- 群主
- 管理员
- 普通成员
群主
群主拥有最高权限,可以:
- 设置多个管理员;管理员之间权限相同。
- 解散群组。
- 将群主身份转让给其他成员。
- 处理入群申请。
- 修改群公告、群名称等群组资料。
群主退出群组前必须先转让群主身份。
管理员
管理员的权限低于群主,可以:
- 处理入群申请。
- 修改群公告、群名称等群组资料。
- 移除或禁言普通成员。
管理员之间没有上下级关系。
普通成员
普通成员可以参与群聊、查看群公告和发送消息。
消息与通知
消息
消息是由用户或系统发送的实际内容,包括文本、图片、视频和其他媒体。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 等受支持的对象存储服务。