Topic 基础
Topic 是 Stream Channel 中数据管理、传输和分发的机制。加入 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 字符集中的字母或数字所组成的字符串,长度至多为 8 个 ASCII 字符。每个 Stream Channel 下的 Topic 名是唯一的,相同的 Topic 名会被认为是同一个 Topic ,但不同的 Stream Channel 中相同名称的 Topic 会被认为是两个不同的 Topic 。
非法字符
"."、"*"、"/"、\、"\0" 和不可打印的 ASCII 字符都属于非法字符。
合法字符
支持的合法字符如下:
- 26 个小写英文字母 a~z
- 26 个大写英文字母 A~Z
- 10 个数字 0~9
- 空格
- "!"、"#"、"$"、"%"、"&"、"("、")"、"+"、","、"-"、":"、";"、"<"、"="、">"、"?"、"@"、"["、"]"、"^"、"_"、"{"、"|"、"}"、"~"、"`"
命名约定
虽然 SDK 并未强制要求,但是声网建议你在为 Topic 命名的时候,通过有意义的前缀字符来表征 Topic 的业务用途或此频道中消息的类型等,以便于你更清晰地展示你的业务逻辑。Topic 命名约定与频道命名约定相同,详见命名约定。