Group overview
Understand group profiles, members, applications, roles, and events in the WASM SDK.
OpenIMSDK uses groups to hold shared profiles, membership, and permissions for multi-user chats. groupID is the stable group identifier used to send group messages, read group profiles, manage members, and process join applications. A group conversation in the current user's chat list is still managed by conversationID; do not interchange the two.
Core data types
| Type | Purpose |
|---|---|
GroupItem | Group name, avatar, announcement, owner, verification settings, member count, and extension data. |
GroupMemberItem | A user's in-group nickname, role, mute state, and join information. |
GroupApplicationItem | A group application and its processing state. |
Group member roles use GroupMemberRole: member is 20, administrator is 60, and owner is 100. The client can use these values to control which actions are shown, but OpenIMServer performs the final permission check.
Find pages by task
| Task | Pages |
|---|---|
| Create and maintain group profiles | Create a group, Update the group name, introduction, and avatar, Publish or update a group announcement, Set group extension data |
| Configure join and member permissions | Set group join verification, Set member profile access, Set in-group friend request permission |
| Join, leave, or dismiss groups | Join a group, Leave a group, Dismiss a group |
| Get joined groups or selected group profiles | Get joined groups by page, Get group information, Search joined groups |
| Get and process group applications | Get received group applications, Get sent group applications |
| Get and manage group members | Get group members, Invite users to a group, Remove group members, Manage group administrators, Transfer group ownership |
| Manage speaking permissions | Set group mute status, Mute or unmute a group member |
State updates
This page owns the complete listeners for group profile changes, the current user joining or leaving, and group dismissal:
import { CbEvents } 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(CbEvents.OnJoinedGroupAdded, handlers.joinedAdded);
openimsdk.on(CbEvents.OnJoinedGroupDeleted, handlers.joinedDeleted);
openimsdk.on(CbEvents.OnGroupInfoChanged, handlers.groupChanged);
openimsdk.on(CbEvents.OnGroupDismissed, handlers.groupDismissed);
function removeGroupListeners() {
openimsdk.off(CbEvents.OnJoinedGroupAdded, handlers.joinedAdded);
openimsdk.off(CbEvents.OnJoinedGroupDeleted, handlers.joinedDeleted);
openimsdk.off(CbEvents.OnGroupInfoChanged, handlers.groupChanged);
openimsdk.off(CbEvents.OnGroupDismissed, handlers.groupDismissed);
}Merge all four events idempotently by groupID. Promise completion, event delivery, and a reconciliation query are separate stages. If an add or delete event arrives during pagination, reset pagination and reload from the first page.
Get group members owns member events, while Get received group applications owns application events.
WASM SDK group APIs cover only OpenIM group profiles, membership, and permissions. Public discovery, complex directories, and capacity governance for large group chats belong to the application backend and OpenIMServer configuration; do not document them as nonexistent client group types.
Was this page helpful?