2024/12/09 18:12:43
事件通知
添加事件监听
如果想要接收 Storage 事件通知,你需要实现事件监听程序,详见事件监听。除此之外,如果你想要接收 Channl Metadata 的事件通知,你需要在订阅或加入频道时将 withMetadata
参数设置成 true
。如果你想要接收 User Metadata 的事件通知,你需要调用 subscribeUserMetadata
订阅指定用户的 User Metadata。
事件通知模式
当前 RTM 仅支持全量数据更新模式,即当 User Metadata 或 Channl Metadata 发生变更后,返回的事件通知中的 data
字段包含用户或频道的全部属性数据。
事件通知类型
RTM 的 Storage 事件通知有以下四种类型:
事件类型 | 描述 |
---|---|
RTM_STORAGE_EVENT_TYPE_SNAPSHOT | 1 : 用户第一次订阅 Channl Metadata 或 User Metadata,或加入频道时触发,本地用户会收到此类事件通知。 |
RTM_STORAGE_EVENT_TYPE_SET |
信息 该事件仅在增量数据更新模式下返回。 |
RTM_STORAGE_EVENT_TYPE_UPDATE | 3 : 当调用设置、更新或删除 Channel Metadata 或 User Metadata 的方法时会返回该类型事件。 |
RTM_STORAGE_EVENT_TYPE_REMOVE |
信息 该事件仅在增量数据更新模式下返回。 |
Storage 事件的数据结构参数含义如下:
属性 | 类型 | 描述 |
---|---|---|
channelType | RTM_CHANNEL_TYPE | 频道类型。详见 RTM_CHANNEL_TYPE 。 |
storageType | RTM_STORAGE_TYPE | Storage 类型。详见 RTM_STORAGE_TYPE 。 |
eventType | RTM_STORAGE_EVENT_TYPE | Storage 事件类型。详见 RTM_STORAGE_EVENT_TYPE 。 |
target | const char* | 用户 ID 或频道名称。 |
data | Metadata | Metadata Item 数组。 |
timestamp | uint64_t | 事件发生的时间戳。 |