跳到主要内容

概念解释

用户类型

在 OpenIM 系统中,用户分为三种类型:普通用户APP 管理员通知号

普通用户

  • 组成userIDfaceURLnicknameex
  • 描述:普通用户通常由外部业务系统导入,代表 OpenIM 系统的标准终端用户。ex字段作为扩展字段供业务使用。

APP 管理员

  • 权限:拥有超级权限
  • 用途:通过 APP 管理员的身份调用 REST API 直接操作 OpenIM 系统。
  • 内置管理员:OpenIM 服务器内置一个 APP 管理员,其 userIDimAdmin

通知号

  • 功能:APP 管理员以系统通知号的身份发送通知消息,不受好友关系和群组权限的约束。可通过REST API增加通知号,以及修改通知号昵称和头像。
  • 用户体验:用户收到消息后,消息会以通知号的头像和昵称显示在会话中。

群组

在 OpenIM 系统中,群组功能包括以下几个方面:

群组类型

  • 单一群组类型:当前系统仅支持一种群组类型,不区分小群或大群。

群成员限制

  • 成员上限:群成员数量无限制,最高支持 100,000 名成员。

进群方式

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

  1. 群成员邀请:现有群成员可以邀请新成员直接加入群组。
  2. 发送进群申请:用户需提交申请,等待群主或管理员批准后方可加入。
  3. 允许所有人加群:任何用户都可以自由加入群组,无需审批。

群组角色及权限

群组内共有三种身份,权限依次递减:

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

群主

  • 权限:拥有最高权限。
  • 管理功能
    • 设置多个管理员,管理员之间权限相同。
    • 解散群组。
    • 转让群主身份给其他群成员。
    • 退群前必须先转让群主身份。
    • 处理进群申请。
    • 管理群设置,如群公告、群名称等。

管理员

  • 权限:与其他管理员权限相同,次于群主。
  • 管理功能
    • 处理进群申请。
    • 管理群设置,如群公告、群名称等。
    • 对普通成员进行管理操作,例如踢出群成员、禁言成员。

普通成员

  • 权限:拥有基本的群组使用权限。
  • 功能:参与群聊,查看群公告,发送消息等。

权限管理

  • 高权限身份操作:群主和管理员可以对低权限身份进行操作,如踢出群、禁言等。
  • 管理员之间权限相同:管理员之间无上下级关系,彼此权限平等。

群主与管理员的管理功能

  • 处理进群申请:群主和管理员可以审核并处理用户的进群申请。
  • 群组设置管理:包括编辑群公告、修改群名称等。

消息和通知

消息

  • 定义:消息指由用户或系统发送的实际内容,包括文字、图片、视频等多媒体形式。
  • 功能
    • 传输内容:将消息内容传送至接收者。
    • 展示与显示:在接收端清晰展示消息内容,确保用户能够理解和查看。

通知

  • 定义:通知指由用户或系统触发的行为,以通知形式发送给相关方。
  • 用途
    • 系统同步:用于同步系统状态或操作,如群成员同步、好友列表同步等。
    • 信息展示:用于向用户展示重要事件或操作结果,例如进群通知、系统公告等。

消息推送

在线推送

  • 定义:当用户在线时,OpenIM 优先使用自己的长连接通道进行消息推送,此时称为在线推送。
  • 特点
    • 实时性强:消息能立即传达给接收者。
    • 稳定性:依赖长连接通道,确保消息传输的可靠性。

离线推送

  • 定义:当用户不在线时,或者 APP 被杀死,此时 OpenIM 长连接无法推送消息,必须借用第三方推送服务。
  • 实现方式
    • 厂商推送:利用如 APNs(苹果推送通知服务)等厂商的推送服务进行消息传递。
    • 中国境内:一般使用个推服务。
    • 境外:一般使用Firebase服务。
  • 特点
    • 覆盖广:适用于各种网络环境,确保消息能在用户恢复上线时被接收。

消息存储类型

本地消息

  • 除了 jssdk 外,OpenIM 的消息会根据需要进行拉取加载。对于客户端已拉取的消息,系统会将其存储在本地,统称为“本地消息” 。

多端同步消息

  • 用户通常会使用多种设备,当用户从设备 A 发送消息时,该消息会同步到设备 B,这类消息称为“多端同步消息” 。

离线消息

  • 用户在离线期间接收到的消息,系统会在用户重新登录后根据需要从服务器同步并加载,这些消息称为“离线消息” 。

漫游消息

  • 当用户更换设备或重新安装应用时,系统会拉取并同步这些历史消息,这些消息被称为“漫游消息” 。

对象存储

  • 对象存储(Object Storage)是一种用于存储海量非结构化数据的存储架构,它通过将数据存储为独立的“对象”来管理信息,每个对象包含数据本身、可扩展的元数据以及一个全局唯一的标识符(Key)。
  • 发送文件、图片、视频类型的消息一般先上传到对象存储后生成URL,然后再发送给对方。 整个流程是IMSDK内部完成的,您无需关心。但需您配置minio、oss、cos、s3等其中一种对象存储服务。