WuKongIM Docs

会话

理解会话为什么是用户自己的聊天列表视图,以及它与频道、未读和删除的关系。

编辑此页报告文档问题

会话(Conversation)是某个用户看到的一项聊天记录,通常对应聊天列表中的一行:它指向一个频道,并展示最近消息、未读数和其他个人状态。

会话不是另一个装消息的容器。消息仍然保存在频道中;WuKongIM 根据用户的频道关系、已提交消息和个人可见状态构建会话视图。

为什么会话重要

  • 组织聊天列表:把已有可见消息或被用户显式激活的频道汇总成可进入的列表。
  • 提示新消息:为当前用户计算未读数和可见范围。
  • 帮助离线恢复:客户端先找到有哪些会话,再分别同步各频道缺失的消息。
  • 支持个人操作:隐藏、清除未读等操作只影响当前用户,不改变其他成员的频道历史。

与其他概念的关系

  • 频道是会话指向的通信空间,也是消息历史的来源。
  • 消息会改变会话中可展示的最近内容和未读投影。
  • 用户拥有自己的会话视图,不同用户的状态彼此独立。
  • 设备同步同一 UID 的会话状态,同时保留各自的本地 UI 状态。

会话与频道的区别

频道会话
是多人共享的通信空间是某个用户对该频道的个人视图
保存频道内有序消息引用最近消息并呈现未读、隐藏等状态
channel_id + channel_type 标识还必须结合当前 UID 才有完整含义
成员看到同一份已提交历史范围每个成员可以有不同的已读位置和可见范围

例如,Alice 和 Bob 都在“周末出行”群频道中。频道里最新消息只有一份,但 Alice 可能已经读完,Bob 仍有 5 条未读,所以两个人看到的会话状态不同。

一个会话通常展示什么

信息用途
频道 ID 与类型确定打开哪个单聊或群聊
最近消息在聊天列表中显示摘要
未读数提示当前用户还有多少新内容
已读与可见边界决定从哪里计算未读、哪些历史仍对当前用户可见
本地展示状态置顶、草稿和最终排序通常由客户端维护

服务端会使用 activated_at 作为活动会话目录的排序依据。它表示用户显式激活频道的时间,不是最新消息时间;未激活且没有可见消息的空频道不会出现在会话列表中。客户端拿到最近消息后,再决定置顶、分组和最终 UI 顺序。

服务端会话列表和每个频道的消息列表使用不同的同步进度。客户端不能用一个游标同时代替两者。

常见操作如何理解

  • 清除未读:推进当前 UID 的未读基线,不等于向对方发送“已读回执”。
  • 隐藏或删除会话:只隐藏当前用户此刻的会话视图,不会退群,也不会删除其他成员的消息;之后出现更高序号的新消息时,会话可以再次出现。
  • 退出或被移除:改变频道成员关系,与隐藏聊天列表不是一回事。
  • 多设备同步:会话和未读通常按 UID 共享,一个设备的更新可能在其他设备下一次同步时出现。

聊天列表的最终展示由客户端决定

WuKongIM 提供会话、最近消息和未读等服务端状态;置顶、草稿、分组以及最终 UI 排序仍应由客户端产品逻辑维护。

继续阅读消息,再选择你的完整版 SDK 平台查看会话 API。需要理解目录分页和服务端构建过程时,再查看会话目录相关架构说明

本页内容