超级群场景实践
超级群概述
融云超级群专为超大规模社区打造,支持百万级成员同时在线、亿级消息并发,是构建大型社区应用的理想会话方案。本文基于融云 IMLib 即时通讯能力,围绕超级群社区场景,系统梳理应用接入过程中的常见业务需求,并提供对应的解决方案与实现指引。
| 概念 | 说明 |
|---|---|
| 超级群 | 无人数上限的群组,类似 Discord 的"服务器" |
| 频道(Channel) | 同一超级群内可划分多个频道,通过 channelId 区分不同话题讨论区 |
与普通群、聊天室的区别
| 特性 | 普通群 | 聊天室 | 超级群 |
|---|---|---|---|
| 成员上限 | 3000 人 | 无限制 | 无限制 |
| 离线消息 | 连接后拉取全部离线消息 | 加入后拉取一定数量历史消息 | 同步会话与最后一条消息,用户进入会话后主动拉取 |
| 远程推送 | 离线时每条消息主动推送 | 无推送 | 离线时固定频率推送(可配置) |
| @消息 | 群内成员全量接收 | 无 @ | 支持 @指定成员、@全员 |
| 消息可靠性 | 100% | 高并发时有抛弃策略 | 100% |
| 频道 | 不支持 | 不支持 | 支持多频道(公有/私有) |
技术优势
- 消息可靠性:海量消息高并发场景下,100% 到达,不丢不重不乱序。
- 成员无上限:单个超级群/频道无人数限制,可承载百万级社区成员。
- 消息状态服务端维护:未读数等状态全部由服务端维护,减轻客户端开发压力。
- 高并发不卡顿:用户无论离线或在线,都能正常接收推送或消息。
应用场景
超级群专为 Discord、Telegram 等实时社群运营模式设计,适用于技术开发社区、兴趣社群、私域流量、粉丝管理、出海运营等业务。
以技术开发社区举例
场景示例:
超级群:前端开发者社区(另有服务端开发者社区等超级群,用户可按需加入)
├── 📢 公有频道:公告通知(官方发布重要信息)
├── 💬 公有频道:新人报到(新成员自我介绍)
├── 🔧 公有频道:技术交流(日常技术讨论)
├── 📚 公有频道:资源分享(学习资料、工具推荐)
├── 🎯 公有频道:求职招聘(工作机会分享)
├── 💧 公有频道:闲聊水吧(轻松聊天)
└── 👑 私有频道:VIP 专区(付费会员专属内容)
功能应用:
- 频道分类:按话题划分不同频道,避免信息混杂
- @ 提及:管理员使用 @全员 发布重要通知
- 私有频道:VIP 会员付费后加入私有频道,享受独家内容和深度交流
- 禁言管理:对发广告、违规内容的用户进行禁言处理
- 消息撤回:管理员删除不当言论,维护社区氛围
- 免打扰:用户可屏蔽“闲聊水吧”等高频频道,只关注核心内容
准备工作
在开始之前,请确保已创建应用并完成客户端 SDK 集成。
- 需先按控制台内嵌指南嵌入到管理后台的 IM 服务功能配置页面(page_code: im_service_config)中,进入超级群开通(仅 IM 尊享版支持开通超级群服务)。
- 超级群的会话类型为
ULTRA_GROUP,与普通群GROUP不同。 - 超级群会话没有离线消息,如果想获取用户离线时候的消息需要您根据超级群会话最后一条消息去获取远端的历史消息。
群管理
创建超级群
使用场景: 类似 Discord 中创建一个"服务器"(Server),作为整个社区的容器。例如创建"前端开发者社区""游戏公会""粉丝后援会"等。
功能目的: 超级群是整个社区的基础架构,所有成员、频道、消息都基于超级群进行组织。一个超级群可以容纳百万级用户,支持在其下创建多个频道进行话题分类。
超级群仅支持通过服务端 API 创建超级群创建,客户端不支持直接创建。创建时需指定创建者用户 ID、超级群 ID 和超级群名称。超级群 ID 须由 App 服务器自行生成并维护。
- Server SDK in Java
- Server SDK in PHP
- Server SDK in Go
- Server API
public Result createUltraGroup() throws Exception {
RongCloud rongCloud = RongCloud.getInstance(appKey, appSecret, CenterEnum.BJ);
UltraGroup ultraGroup = rongCloud.ultraGroup;
UltraGroupModel ultraGroupModel = new UltraGroupModel()
.setId("ultragroup001")
.setUserId("user001")
.setName("ultragroupName");
Result result = ultraGroup.create(ultraGroupModel);
System.out.println("ultragroup create result: " + result);
return result;
}
<?php
require './RongCloud/RongCloud.php';
use RongCloud\RongCloud;
$appKey = '你的 AppKey';
$appSecret = '你的 AppSecret';
$rongSDK = new RongCloud($appKey, $appSecret);
$group = [
'id' => 'super_group_001', // 超级群 ID
'name' => '测试超级群', // 超级群名称
'member' => [
'id' => 'user_001' // 创建人用户 ID
],
];
$result = $rongSDK->getUltragroup()->create($group);
print_r($result);
func TestRongCloud_UGGroupCreate(t *testing.T) {
rc := NewRongCloud(
os.Getenv("APP_KEY"),
os.Getenv("APP_SECRET"),
REGION_BJ,
)
err, requestId := rc.UGGroupCreate(
"u02", // 创建者用户 ID
"rongcloud_group01", // 超级群 ID
"super", // 超级群名称
)
t.Log(err)
t.Log(requestId)
}
接口: POST /ultragroup/create.json
参数说明:
| 参数 | 类型 | 必传 | 说明 |
|---|---|---|---|
userId | String | 是 | 创建者用户 ID,创建后同时加入超级群 |
groupId | String | 是 | 超级群 ID,最大长度 64 字符,支持大小写英文字母与数字 |
groupName | String | 是 | 超级群名称,用于远程推送通知显示 |
示例代码:
POST /ultragroup/create.json HTTP/1.1
Host: api-cn.ronghub.com
App-Key: uwd1c0sxdlx2
Nonce: 14314
Timestamp: 1408710653491
Signature: 45beb7cc7307889a8e711219a47b7cf6a5b000e8
Content-Type: application/x-www-form-urlencoded
userId=user001&groupId=ultragroup001&groupName=技术交流社区
返回结果:
{"code":200}
解散超级群
使用场景: 当社区不再运营、项目结束或需要彻底关闭社群时(类似 Discord 删除服务器)。
功能目的: 彻底清理超级群相关数据,包括所有频道、成员关系。解散后,原成员无法再接收该群的任何消息。
超级群解散需通过服务端 API 解散超级群完成。解散后,所有用户无法再接收该群消息,群成员关系不复存在。
- Server SDK in Java
- Server SDK in PHP
- Server SDK in Go
- Server API
public Result dismissUltraGroup() throws Exception {
RongCloud rongCloud = RongCloud.getInstance(appKey, appSecret, CenterEnum.BJ);
UltraGroup ultraGroup = rongCloud.ultraGroup;
String groupId = "ultragroup001";
Result result = ultraGroup.dis(groupId);
System.out.println("ultragroup dismiss result: " + result);
return result;
}
<?php
require './RongCloud/RongCloud.php';
use RongCloud\RongCloud;
define('REGION_BJ', ['http://api.rong-api.com/', 'http://api-b.rong-api.com/']);
function TestRongCloud_UGGroupDismiss()
{
$rc = new RongCloud(
getenv('APP_KEY'),
getenv('APP_SECRET'),
REGION_BJ
);
$result = $rc->getUltragroup()->dismiss([
'id' => 'rongcloud_group01',
]);
print_r($result);
}
func TestRongCloud_UGGroupDismiss(t *testing.T) {
rc := NewRongCloud(
os.Getenv("APP_KEY"),
os.Getenv("APP_SECRET"),
REGION_BJ,
)
err, requestId := rc.UGGroupDismiss(
"rongcloud_group01", // 超级群 ID
)
t.Log(err)
t.Log(requestId)
}
接口: POST /ultragroup/dis.json
参数说明:
| 参数 | 类型 | 必传 | 说明 |
|---|---|---|---|
groupId | String | 是 | 要解散的超级群 ID |
示例代码:
POST /ultragroup/dis.json HTTP/1.1
Host: api-cn.ronghub.com
App-Key: uwd1c0sxdlx2
Timestamp: 1408710653491
Nonce: 14314
Signature: 45beb7cc7307889a8e711219a47b7cf6a5b000e8
Content-Type: application/x-www-form-urlencoded
groupId=ultragroup001
返回结果:
{"code":200}
加入超级群
使用场景: 用户点击邀请链接、搜索发现社区后加入(类似 Discord 点击邀请链接加入服务器),或由管理员批量导入成员。
功能目的: 将用户添加为超级群成员,加入后可以看到所有公有频道的消息,参与社区讨论。适用于开放式社区招募、内部团队成员管理、粉丝群运营等场景。
将用户加入指定超级群需通过服务端 API 加入超级群完成。加入后,用户将可以收到该群的消息。
- Server SDK in Java
- Server SDK in PHP
- Server SDK in Go
- Server API
public Result joinUltraGroup() throws Exception {
RongCloud rongCloud = RongCloud.getInstance(appKey, appSecret, CenterEnum.BJ);
UltraGroup ultraGroup = rongCloud.ultraGroup;
UltraGroupModel ultraGroupModel = new UltraGroupModel()
.setId("ultragroup001")
.setUserId("user001");
Result result = ultraGroup.join(ultraGroupModel);
System.out.println("ultragroup join result: " + result);
return result;
}
<?php
require './RongCloud/RongCloud.php';
use RongCloud\RongCloud;
define('REGION_BJ', ['http://api.rong-api.com/', 'http://api-b.rong-api.com/']);
function TestRongCloud_UGGroupJoin()
{
$rc = new RongCloud(
getenv('APP_KEY'),
getenv('APP_SECRET'),
REGION_BJ
);
$result = $rc->getUltragroup()->joins([
'id' => 'rongcloud_group01', // 超级群 ID
'member' => [
'id' => 'user01', // 用户 ID
],
]);
print_r($result);
}
func TestRongCloud_UGGroupJoin(t *testing.T) {
rc := NewRongCloud(
os.Getenv("APP_KEY"),
os.Getenv("APP_SECRET"),
REGION_BJ,
)
err, requestId := rc.UGGroupJoin(
"u02", // 用户 ID
"rongcloud_group01", // 超级群 ID
)
t.Log(err)
t.Log(requestId)
}
接口: POST /ultragroup/join.json
参数说明:
| 参数 | 类型 | 必传 | 说明 |
|---|---|---|---|
userId | String | 是 | 要加入群的用户 ID,单次仅支持 1 个用户 |
groupId | String | 是 | 要加入的超级群 ID |
示例代码:
POST /ultragroup/join.json HTTP/1.1
Host: api-cn.ronghub.com
App-Key: uwd1c0sxdlx2
Timestamp: 1408710653491
Nonce: 14314
Signature: 45beb7cc7307889a8e711219a47b7cf6a5b000e8
Content-Type: application/x-www-form-urlencoded
userId=user002&groupId=ultragroup001