Channels(频道) 是 RTM 2 实时网络中一种数据传输的管理机制,任何订阅或加入频道的用户都可以在 100ms 内接收到频道中传输的消息和事件,RTM 2 允许客户端订阅数百甚至数千个频道。大多数 RTM 2 API 都将以频道为基础进行发送、接收、加密等行为。
基于声网的能力,RTM 2 的频道分成两种类型以匹配不同的应用场景:Stream Channel 和 Message Channel。两种频道类型的主要区别如下:
频道类型 | 主要特征 | 适用场景 |
---|---|---|
Message Channel | 遵循行业最标准的 Pub/Sub (发布/订阅)模式,频道无需提前创建,随用随取,频道内的生产者和消费者数量没有上限,但对于单个频道的上行 QPS(Queries per second,每秒查询数) 有限制。 | 常见的基于 Pub/Sub 场景的应用及多设备接入的应用,例如:IoT 行业的多设备管理和指令收发,智能设备中的多终端管理和指令收发位置跟踪,大型社区等。 |
Stream Channel | 遵循行业类似观察者模式的 Room (房间)概念,用户需要进入频道(Join Channel)才能进行下一步操作。频道中允许创建不同的 Topic,频道内最多容纳 1000 个用户,单个 Topic 的上行 QPS 可以提升至较高值。 | 元宇宙中高并发上行数据的传输应用场景,以及与 RTC 合并使用的场景,例如:元宇宙,平行驾驶,云游戏等。 |
RTM 2 网络中两种频道的特性对比如下:
特性 | Message Channel | Stream Channel |
---|---|---|
频道创建 | 用户不必提前定义或创建频道, 在频道上发布消息时会自动创建频道。 |
频道需要提前创建, 加入频道后才能收发消息或事件通知。 |
使用限制 | 用户发送消息(Publish)不限制频道数量。 单个频道不限制订阅者数量。 单个用户可以同时订阅最多 100 个的频道, 可通过频道组方式订阅更多频道。 |
单个频道可容纳最多 1000 个用户。 只有在房间中的用户才可以发布/订阅频道中的 Topics。 |
频道类型 | 频道按照使用场景可以分为: |
类似于 Room 的概念,属于标准的 Group Channel。 |
频道组 | 可以将多个 Message Channel 设置成一个频道组, 实现单个用户订阅多个频道的目的。 |
无频道组概念。 |
频道名称 | 频道名称可为任何不超过 128 位 UTF-8 字符的字母数字字符串, 单个 VID 下频道名唯一。 |
同 Message Channel。 |
频道安全 | 可采用 Token 来控制客户端对频道的访问。 频道传输默认开启 TSL 传输层加密。 用户可以在初始化的时候配置 cipherKey 对消息负载再次加密。 |
同 Message Channel。 |
Topic | 无 Topic 概念。 | 频道中可以创建多个 Topic, 用户消息通过频道中的 Topics 进行投递。 |
Presence | 四个 UID 级别的事件: 两个 Channel 级别的事件: |
同 Message Channel。 |
Storage | 具备频道属性。 | 具备频道属性。 |
两种频道的区别可见下图:
单个 VID 下频道名唯一,即你可以在一个 VID 中使用另一个 VID 已经存在的频道名称。频道名称不能为空,可为长度在 64 字节以内的字符串。
以下为支持的字符集范围:
单个 VID 可拥有的频道没有数量限制。但根据频道类型的不同,单个个客户端所能订阅或加入的频道数量有所区别,不同频道的订阅者数量或加入者数量也有不同限制,
Message Channel:用户发送消息不限制频道数量。单个频道不限制订阅者数量。单个用户可以同时订阅最多 100 个的频道,可通过频道组方式订阅更多频道。
Stream Channel:单个频道可容纳最多 1000 个用户。单个用户可以同时订阅最多 100 个的频道。
Topic 是 Stream Channel 中组织数据流的一种机制,Message Channel 中不存在 Topic。
如果你想要发送实时消息,首先需要调用 JoinTopic
加入指定的 Topic。不再需要发送实时消息的时候,可以调用 LeaveTopic
离开 Topic 以释放资源。调用 JoinTopic
、LeaveTopic
同时也会触发对应的 Presence 事件,频道中的其他成员可以收到对应事件通知。
Topic 名称可设为 16 字节以内的字符串,单个频道下 Topic 名唯一,即你可以在一个频道中使用另一个频道已经存在的 Topic 名称。
单个频道可拥有的 Topic 的数量无上限,但单个客户端同时只能加入最多 8 个 Topic,及同时订阅最多 50 个 Topic。对于订阅的每一个 Topic ,客户端只能接收该 Topic 中最多 64 个用户的数据流。只有在频道内的用户才可以发布/订阅频道中的 Topics。
收发信息是 RTM 2 的基础能力之一,基于 RTM 2 实时网络,任何人在全球任何地方发送的信息都可以在 100 ms 内安全可靠地发送到接收端。用户可以给一个人发送消息,也可以一次性给成千上万人广播消息。
Message Channel 和 Stream Channel 收发消息的机制有所不同。