Flutter

服务端会话服务

更新时间: 2024/03/07 11:14:43

服务端会话服务

服务端会话服务与本地最近会话不同,其提供了新的会话列表获取服务,需要从云端拉取,不支持同步到本地最近会话列表。

  • 服务器支持存储用户全量的会话历史列表以及保存最近一条消息;

  • 客户端获取会话列表,支持按照需要指定获取的会话数,不与本地会话合并;

  • 不支持未读数;

服务端最近会话对象原型为 RecentSession ,它记录了与用户最近有过会话的联系人信息,包括联系人帐号、最近一条消息的时间、扩展字段、消息内容等信息。

RecentSession 类型说明

参数 类型 说明
sessionId String 获取会话的 ID(好友帐号,群 ID 等)
updateTime int 获取最近一条消息的时间戳
ext String 获取扩展字段
lastMsg String 获取最后一条消息的 Json 字符串
revokeNotification RevokeMsgNotification 最后一条消息为撤回通知时,返回不是 null
此时,可通过此接口获得一个 RevokeMsgNotification 实例,里面只有部分内容,或者为空
recentSession NIMSession 新建带有 RecentSession 信息的 NIMSession
sessionTypePair String 从 session 中分离出会话类型(Windows 和 macOS 暂不支持)
lastMsgType int 最近一条消息的类型,0 或者缺失表示普通消息,1 表示消息撤回通知

服务端会话列表 RecentSessionList,记录了一页 RecentSession 数据,和是否有更早消息的提示。

RecentSessionList 接口说明:

参数 类型 说明
hasMore bool 是否有更早的消息
sessionList List<RecentSession> 拉到的一页会话列表

获取会话列表

  • API 原型
dartclass MessageService {
  ///
  /// 【会话服务】增量获取会话列表,增量+翻页
  ///
  /// [minTimestamp]  最小时间戳,作为请求参数时表示增量获取Session列表,传0表示全量获取
  /// [maxTimestamp]  最大时间戳,翻页时使用
  /// [needLastMsg]  是否需要lastMsg,0或者1,默认1
  /// [limit]        结果集limit,最大100,默认100
  /// [hasMore]      结果集是否完整,0或者1(Windows和macOS暂不支持)
  ///
  Future<NIMResult<RecentSessionList>> queryMySessionList(
      int minTimestamp,int maxTimestamp,int needLastMsg,int limit,int hasMore)
}

  • 参数说明
参数 类型 说明
minTimestamp int 最小时间戳,增量获取 Session 列表,传 0 表示全量获取
maxTimestamp int 最大时间戳,翻页时使用
needLastMsg int 是否需要 lastMsg,0 或者 1,默认 1
limit int 结果集 limit,最大 100,默认 100
hasMore int 结果是否完整,0 或 1(Windows 和 macOS 暂不支持)

获取指定会话

  • API 原型
dart
class MessageService {

  /// 【会话服务】获取某一个会话
  /// [sessionId] 分为p2p/team/superTeam,格式分别是:p2p|accid、team|tid、	super_team|tid
  ///
  Future<NIMResult<RecentSession>> queryMySession(String sessionId,NIMSessionType sessionType);
}
  • 参数说明
参数 类型 说明
sessionId String 分为 p2p/team/superTeam

修改服务端会话扩展

  • API 原型
dartclass MessageService {
  ///
  /// 【会话服务】更新某一个会话,主要是设置会话的ext字段,如果会话不存在,则会创建出来,此时会话没有lastMsg
  ///
  /// [sessionId] 分为p2p/team/superTeam,格式分别是:p2p|accid、team|tid、super_team|tid
  /// [ext]       会话的扩展字段,仅自己可见
  ///
 Future<NIMResult<void>> updateMySession(String sessionId,NIMSessionType sessionType,String ext);
}
  • 参数说明
参数 类型 说明
sessionId String 分为 p2p/team/superTeam
ext String 会话的扩展字段,仅自己可见

删除服务端会话

  • API 原型
dartclass MessageService {
  ///
  /// 【会话服务】删除会话
  ///
  /// [sessionList] 每一项的格式:分为p2p/team/superTeam,格式分别是:p2p|accid、team|tid、super_team|tid
  ///
  Future<NIMResult<void>> deleteMySession(List<NIMMySessionKey> sessionList);
}
  • 参数说明
参数 类型 说明
sessionList List 每一项:分别为 p2p/team/superTeam

监听服务端会话更新

  • API 原型
dartclass MessageService {
  ///
  /// 【会话服务】监听服务端会话更新
  ///
  final StreamController<RecentSession> onMySessionUpdate =
  StreamController<RecentSession>.broadcast();
}
  • 示例
dart NimCore.instance.messageService.onMySessionUpdate.listen((RecentSession event) {
    ///当有服务端会话更新时,可以在这里获取到更新的服务端会话
});
此文档是否对你有帮助?
有帮助
去反馈
  • 获取会话列表
  • 获取指定会话
  • 修改服务端会话扩展
  • 删除服务端会话
  • 监听服务端会话更新