频道
理解频道如何表示消息目标,以及单聊、群聊、成员关系和消息历史如何围绕频道组织。
频道(Channel)可以理解为消息的“地址”或“房间”。每条消息都属于一个频道,频道决定消息发到哪里、接收范围是什么,以及消息在哪个范围内保持顺序。
一个频道由 channel_id 和 channel_type 共同标识。ID 相同但类型不同,会被当作两个不同的频道。
为什么频道重要
- 确定消息目标:单聊发给某个用户,群聊发给某个群,本质上都是选择一个频道。
- 组织参与者:频道类型和成员关系共同决定谁可以发送、谁可以接收。
- 承载连续历史:普通持久消息在各自频道内编号、排序和恢复,不同频道互不混淆。
- 复用通信能力:通知、客服、直播、社区和 Agent 等场景也可以建立在频道之上。
与其他概念的关系
- 发送消息时必须指定目标频道;普通持久消息的顺序也以频道为边界。
- 用户通过频道参与单聊、群聊或其他通信场景。
- 设备只是用户进入频道的端点,不改变频道身份。
- 会话是某个用户看到的频道入口;同一频道在不同用户侧有各自的未读和可见状态。
最常用的两类频道
| 场景 | Channel ID 怎么选 | 谁维护参与关系 |
|---|---|---|
| 单聊 | 发送时使用对方的 UID | 业务系统维护好友、陌生人或其他发送策略 |
| 群聊 | 使用业务系统中稳定的群 ID | 业务系统创建群并把成员、黑白名单等状态同步给 WuKongIM |
例如,Alice 给 Bob 发送单聊消息时,Alice 以 Bob 的 UID 作为目标;Bob 回复时以 Alice 的 UID 作为目标。WuKongIM 会在内部把双方视角归一到同一份单聊历史,应用不需要构造内部频道 ID。
除了单聊和普通群聊,WuKongIM 还定义了社区、资讯、直播、访客和 Agent 等专用类型。只有服务端、所选 SDK 和业务流程都明确支持时才使用它们,完整取值见 Channel Type。
频道与业务群不是同一个概念
对于群聊,业务群和频道通常使用同一个群 ID,但职责不同:
| 业务系统负责 | WuKongIM 负责 |
|---|---|
| 群名称、头像、公告和群角色 | 频道身份、消息路由和频道内顺序 |
| 谁可以建群、入群、邀请或退群 | 保存已经同步的成员与频道策略 |
| 内容规则、租户隔离和业务审核 | 持久化消息、实时投递和离线恢复 |
创建业务群之后,还要通过受信后端把成员和策略同步给 WuKongIM。仅知道一个 Channel ID 不代表用户已经有权加入或发送。
开发时记住
- 把
channel_id + channel_type作为完整频道键,不能只保存 ID。 - 单聊调用方使用对方 UID,不要把服务端内部规范化身份回写成业务好友 ID。
- Channel Type 不是权限;成员、角色和内容策略仍由业务系统定义。
- 面向十万成员群时,成员变更和在线投递需要分页与有界处理,具体方案见大群教程。
继续阅读用户和会话。需要理解频道副本、提交和迁移时查看 Channel 消息层。