群组管理


调用listRooms函数获取当前登录用户加入的群组列表,示例如下。

// 列出所有群组
var listGroups = function () {
    var option = {
        success: function (rooms) {
            console.log(rooms);
        },
        error: function () {
            console.log('List groups error');
        }
    };
    conn.listRooms(option);
};

根据roomId查询群组成员。

// 查询群组成员
// 查询出来的member的结构为{affiliation: 'member', jid: 'easemob-demo#chatdemoui_wjy6@easemob.com'}
// 注意,这里的jid格式,成员的用户名是chatdemoui_之后,@easemob.com之前的字符串,如本例的wjy6是用户名
var queryRoomMember = function () {
    var member = '';
    conn.queryRoomMember({
        roomId: '114715680632209992',
        success: function (members) {
            for (var o in members) {
                member = members[o];
                console.log(member);
            }
        }
    });
};
// 获取群组黑名单
var getGroupBlackList = function () {
    var option = {
        roomId: '1480758709661',
        success: function (list) {
            console.log('Get group black list: ', list);
        },
        error: function () {
            console.log('Get group black list error.');
        }
    };
    conn.getGroupBlacklist(option);
};

创建群组,并设置群组属性的示例如下。

// 建立一个群组
var createGroup = function () {
    var option = {
        subject: 'groupName',                       // 群名称
        description: 'create a group test',         // 群简介
        members: ['wjy6', 'asdfghj'],               // 以数组的形式存储需要加群的好友ID
        optionsPublic: true,                        // 允许任何人加入
        optionsModerate: false,                     // 加入需审批
        optionsMembersOnly: false,                  // 不允许任何人主动加入
        optionsAllowInvites: false                  // 允许群人员邀请
    };
    conn.createGroup(option);
}

再在回调函数中的onPresence中添加:

If( message.type == 'createGroupACK'):
    conn.createGroupAsync({
        from: message.from,
        success: function(option){
            console.log('Create Group Succeed');
        }
    });

应用场景:判断用户是否为该群管理员。

// 获取群组信息
var queryGroupInfo = function () {
    conn.queryRoomInfo({
        roomId: '1480747027186',
        // settings 表示入群的权限,具体值待定
        // members[0]里面包含群主信息,其结构为{affiliation: 'owner', jid: appKey + '_' + username + '@easemob.com'}
        // jid中的username就是群主ID
        // fields的结构为:
        /*
         {
         affiliations: '2',                  
         description: '12311231313',         // 群简介
         maxusers: '200',                    // 群最大成员容量
         name: '123',                        // 群名称
         occupants: '2',                     
         owner: 'easemob-demo#chatdemoui_mengyuanyuan'               // 群主jid
         }
         */
        success: function (settings, members, fields) {
            console.log('settings: ', settings);
            console.log('members: ', members);
            console.log('fields: ', fields);
        },
        error: function () {
            console.log('Error!');
        }
    });
};

只有群组的管理员可以修改群组名称和群组简介,示例如下。

注意:在获取群组时候就可以获取群管理员的ID,从而前端可决定是否显示修改信息按钮。

// 修改群信息
var changeGroupInfo = function () {
    var option = {
        roomId: '1480756943693',
        subject: 'ChangeTest',    // 群组名称
        description: 'Change group information test',  // 群组简介
        success: function () {
            console.log('Change Group Names Success!');
        }
    };
    conn.changeGroupSubject(option);
};

管理员可以将好友加入群组。

// 加好友入群
var addGroupMembers = function () {
    var option = {
        list: ['asdfghj', 'wjy6'],
        roomId: '1480841456167'
    };
    conn.addGroupMembers(option);
};

只有群组的管理员有权限将成员踢出群组,踢出群组的同时,将该群成员拉入群组黑名单。

注意:在获取群组时候就可以获取群管理员的ID,从而前端可决定是否显示踢人按钮。

// 将成员踢出群(同将群成员拉入群黑名单)
var addToGroupBlackList = function () {
    var option = {
        affiliation: 'owner',                       // 写死
        roomId: '1480756943693',                    // 群组ID
        success: function () {
            console.log('add to black list succeed');
        },
        to: 'asdfghj'                               // 需要删除的成员ID
    };
    conn.addToGroupBlackList(option);
};

将好友移出群组黑名单后,该好友依然是群组成员。

// 将好友从黑名单移除
var removeFromGroupBlackList = function () {
    var option = {
        roomId: '1480841456167',
        to: 'wjy6',
        success: function () {
            console.log('Remove from black list success!');
        }
    };
    conn.removeGroupMemberFromBlacklist(option);
};

只有群组的管理员有权限将成员踢出群组。群组解散后,所有群成员均退出该群。

注意:在获取群组时候就可以获取群管理员的ID,从而前端可决定是否显示解散按钮。

// 解散一个群组
var destroyGroup = function () {
    var option = {
        reason: 'Test Destroy Group',
        roomId: '1480840256052',
        success: function () {
            console.log('Destroy group success!');
        }
    };
    conn.destroyGroup(option);
};

群成员可以主动退出群组,示例如下。

// 成员主动退出群
var leaveGroup = function () {
    var option = {
        to: 'asdfghj',
        roomId: '1480747027186',
        success: function () {
            console.log('You leave room succeed!');
        },
        error: function () {
            console.log('Leave room faild');
        }
    };
    conn.leaveGroupBySelf(option);
};

发送消息

群聊接收及处理消息同单聊,消息体与单聊消息根据 message 的 type 进行区分,单聊为:chat,群聊为:groupchat,聊天室为:chatroom。根据消息的类型进行不同处理即可。


上一页:好友管理

下一页:聊天室管理