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 配置,不应扩写成不存在的客户端群组类型。
这个页面有帮助吗?