浏览 SDKs · WASM
SDKsWASM

群组概览

了解 WASM SDK 中群资料、群成员、入群申请、成员角色和群组事件的关系。

复制

OpenIMSDK 的多人聊天使用群组承载共享资料、成员关系和权限。发送群消息、读取群资料、管理成员和处理入群申请时都使用 groupID 指定群组。当前用户聊天列表中的群会话则由 conversationID 指定,两者不能混用。

核心数据类型

类型用途
GroupItem群名称、头像、公告、群主、验证配置、成员数和扩展字段。
GroupMemberItem用户在指定群内的昵称、角色、禁言和入群信息。
GroupApplicationItem入群申请及处理状态。

群成员角色使用 GroupMemberRole:普通成员为 20,管理员为 60,群主为 100。客户端可以据此控制操作入口,但最终权限由 OpenIMServer 校验。

按任务查找页面

状态更新

本页集中提供群资料变化、当前用户加入或退出群组,以及群组解散事件的完整监听示例:

import { SdkEvent } from '@openim/wasm-client-sdk';

const handlers = {
  joinedAdded: ({ data }) => mergeJoinedGroup(data),
  joinedDeleted: ({ data }) => removeJoinedGroup(data.groupID),
  groupChanged: ({ data }) => mergeGroup(data),
  groupDismissed: ({ data }) => markGroupDismissed(data.groupID),
};

openimsdk.on(SdkEvent.OnJoinedGroupAdded, handlers.joinedAdded);
openimsdk.on(SdkEvent.OnJoinedGroupDeleted, handlers.joinedDeleted);
openimsdk.on(SdkEvent.OnGroupInfoChanged, handlers.groupChanged);
openimsdk.on(SdkEvent.OnGroupDismissed, handlers.groupDismissed);

function removeGroupListeners() {
  openimsdk.off(SdkEvent.OnJoinedGroupAdded, handlers.joinedAdded);
  openimsdk.off(SdkEvent.OnJoinedGroupDeleted, handlers.joinedDeleted);
  openimsdk.off(SdkEvent.OnGroupInfoChanged, handlers.groupChanged);
  openimsdk.off(SdkEvent.OnGroupDismissed, handlers.groupDismissed);
}

收到以上事件后,使用 groupID 找到并更新对应群组,同时避免重复添加同一条记录。Promise 成功、事件到达,以及重新查询得到最新数据,是三个独立阶段;分页期间收到新增或删除事件时,应重置分页并从第一页重新加载。

群成员事件的完整监听见分页查询群成员,入群申请事件的完整监听见获取收到的入群申请

WASM SDK 的群组 API 只处理 OpenIM 群资料、成员关系和权限。公开发现、复杂目录和大规模群聊的容量治理属于业务后端与 OpenIMServer 配置,不应扩写成不存在的客户端群组类型。