Flutter

服务器管理

更新时间: 2024/11/21 17:18:38

NIM SDK 的QChatServerService类提供管理服务器的相关方法,支持圈组服务器的创建、修改、查询和删除。

前提条件

使用限制

单个用户的服务器的数量上限(包括自己创建的和加入的)默认为 100 个。

若需要扩展上限,可在控制台配置圈组子功能项(单个用户 server 数),具体请参考开通和配置圈组功能

实现方法

创建服务器

调用createServer方法可创建一个服务器。

示例代码如下:

dartvar param = QChatCreateServerParam("测试");
var antiSpamConfig = QChatAntiSpamConfig()
  ..antiSpamBusinessId = "用户配置的对某些资料内容另外的反垃圾的业务ID";
param.antiSpamConfig = antiSpamConfig;
NimCore.instance.qChatServerService.createServer(param).then((value) {
  if (value.isSuccess) {
    // 创建成功
    var server = value.data?.server;
  } else {
    // 创建失败
  }
});

上述示例代码中的antiSpamConfig为圈组内容审核配置,详情请参见圈组内容审核

修改服务器

调用updateServer方法可修改服务器的配置信息,包括服务器名称、服务器图标、服务器自定义扩展、服务器邀请模式和服务器申请模式等。

调用该方法需要拥有“管理服务器”的权限(MANAGE_SERVER)。权限通过身份组进行配置和管理,具体请参见身份组概述及其他身份组相关文档。


示例代码如下:

dartvar antiSpamConfig = QChatAntiSpamConfig()
  ..antiSpamBusinessId = "用户配置的对某些资料内容另外的反垃圾的业务ID";
var param = QChatUpdateServerParam(serverId)
  ..name = "修改Server名称"
  ..antiSpamConfig = antiSpamConfig;
NimCore.instance.qChatServerService.updateServer(param).then((value) {
  if (value.isSuccess) {
    // 修改Server信息成功
    var server = value.data?.server;
  } else {
    // 修改Server信息失败
  }
});

查询服务器

分页查询服务器列表

用户登录圈组后,如果想要获取当前圈组内已有的服务器,可调用getServersByPage方法,通过时间戳和查询数量分页查询服务器列表。调用时可通过Future<NIMResult<QChatGetServersByPageResult>> 可设置回调函数,监听操作结果。如果调用成功,回调返回查询到的服务器列表。

示例代码如下:

dartfinal param =
  new QChatGetServersByPageParam(DateTime.now().millisecond, 100);
NimCore.instance.qChatServerService.getServersByPage(param).then((value) {
  if(value.isSuccess){
    // 查询Server信息成功
    var servers = value.data?.servers;
  }else{
    // 查询Server信息失败
  }
});

根据服务器ID查询服务器列表

用户登录圈组后,如果需要检索服务器,可调用getServers方法,根据服务器的 ID 查询对应的服务器列表。调用时可通过Future<NIMResult<QChatGetServersResult>>可设置回调函数,监听操作结果。如果调用成功,回调返回查询到的服务器列表。

示例代码如下:

dartfinal param = QChatGetServersParam([serverId1, serverId2]);
NimCore.instance.qChatServerService.getServers(param).then((value) {
  if (value.isSuccess) {
    // 查询Server信息成功
    var servers = value.data?.servers;
  } else {
    // 查询Server信息失败
  }
});

删除服务器

服务器创建者可调用deleteServer方法将自己创建的某个服务器删除。

仅服务器创建者可删除服务器。


示例代码如下:

dartvar param = QChatDeleteServerParam(serverId);
NimCore.instance.qChatServerService.deleteServer(param).then((value){
  if(value.isSuccess){
    // 删除Server成功
  }else{
    // 删除Server失败
  }
});

相关参考

相关系统通知

圈组系统通知的类型在QChatSystemNotificationType枚举中定义,与服务器管理相关的内置系统通知类型如下:

枚举值 说明
server_create 服务器创建成功
server_remove 服务器删除成功
server_update 服务器信息修改成功

更多圈组系统通知相关说明,请参见圈组系统通知相关

API 调用时序

sequenceDiagram



note over NIM SDK: 初始化 SDK 并登录 IM
note over NIM SDK: 注册监听并登录圈组
创建者 ->> NIM SDK: 监听圈组系统通知<br>(onReceiveSystemNotification)
普通成员 ->> NIM SDK: 监听圈组系统通知<br>(onReceiveSystemNotification)
创建者 ->> NIM SDK: 登录圈组<br>(login)
普通成员 ->> NIM SDK: 登录圈组<br>(login)
note over NIM SDK: 创建服务器
创建者 ->> NIM SDK: 创建服务器<br>(createServer)
NIM SDK ->> 创建者: 服务器创建成功通知<br>(server_create)
note over NIM SDK: 成员加入服务器
note left of 普通成员: 此处省略具体调用方法,具体见<br>服务器成员管理文档
note over NIM SDK: 成员订阅服务器
普通成员 ->> NIM SDK: 订阅服务器<br>(subscribeServer)
note left of 普通成员: 普通成员需订阅服务器<br>才能收到服务器相关系统通知
note over NIM SDK: 修改服务器
创建者 ->> NIM SDK: 修改服务器<br>(updateServer)
NIM SDK ->> 创建者: 服务器信息修改成功通知<br>(server_update)
NIM SDK ->> 普通成员: 服务器信息修改成功通知<br>(server_update)
note left of 普通成员: 在线且订阅服务器才能收到该通知
note over NIM SDK: 删除服务器
创建者 ->> NIM SDK: 删除服务器<br>(deleteServer)
NIM SDK ->> 创建者: 服务器删除成功通知<br>(server_remove)
NIM SDK ->> 普通成员: 服务器删除成功通知<br>(server_remove)
note left of 普通成员: 在线且订阅服务器才能收到该通知

上图中:

此文档是否对你有帮助?
有帮助
去反馈
  • 前提条件
  • 使用限制
  • 实现方法
  • 创建服务器
  • 修改服务器
  • 查询服务器
  • 分页查询服务器列表
  • 根据服务器ID查询服务器列表
  • 删除服务器
  • 相关参考
  • 相关系统通知
  • API 调用时序