Topic 基础

更新时间不可用

了解如何在实时消息 RTM 中使用 Topic,包括适用场景、配置步骤、实现要点和注意事项。

Topic 是 Stream 类型频道中数据管理、传输和分发的机制。加入 Stream Channel 后,你并不具备消息收发的能力,你需要通过 Topic 实现消息收发功能。Topic 的所有订阅者会在 100 毫秒内收到发布者发送的数据。

相比于 Message Channel,Stream Channel 中的 Topic 机制具备更高的消息传输速率、更大的消息并发能力及与音视频数据同步传输的协同能力等优秀特性。因此,Topic 机制被广泛地应用在元宇宙、AR/VR、互动游戏、实时协同、平行操控等场景。

创建 Topic

在 RTM 中,Topic 属于动态资源,用户可以随取随用。你无需提前定义或创建 Topic,SDK 会在首个用户加入 Topic 时自动创建;你也无需专门销毁 Topic,SDK 会在最后一个用户离开 Topic 时自动销毁。

Topic 限制

RTM 允许单个客户端同时存在无限个 Topic,且每个 Topic 中的订阅者和发布者数量没有限制。然而,为了平衡端侧带宽和性能,RTM 对单个客户端同时加入的 Topic 数量、同时订阅的 Topic 数量以及在一个 Topic 中同时订阅的消息发布者数量有一定限制,详见 API 调用限制。

Topic 命名

Topic 名称是由 ASCII 字符集中的合法字符所组成的字符串,长度至多为 16 个 ASCII 字符。每个 Stream 类型频道下的 Topic 名是唯一的。一个 Stream Channel 中相同的 Topic 名会被认为是同一个 Topic,但不同的 Stream 类型频道中相同名称的 Topic 会被认为是两个不同的 Topic。

非法字符

.、*、/、\、\0 和不可打印的 ASCII 字符都属于非法字符。

合法字符

支持的合法字符如下:

  • 26 个小写英文字母 a~z
  • 26 个大写英文字母 A~Z
  • 10 个数字 0~9
  • 空格
  • !、#、$、%、&、(、)、+、,、-、:、;、<、=、>、?、@、[、]、^、_、{、|、}、~、`

信息

命名不能以 _ 为前缀。

命名约定

虽然 SDK 并未强制要求,但是声网建议你在为 Topic 命名的时候,通过有意义的前缀字符来表示 Topic 的业务用途或此 Topic 中消息的类型等,以便于你更清晰地展示你的业务逻辑。Topic 命名推荐与频道命名推荐相同,详见命名推荐。