消息服务
简介
Pano SDK 提供简易消息服务(称为RTM,Real Time Messaging),开发者可以通过此功能实现聊天、保存状态信息、或者传递控制指令等。
主要有三种类型的消息:
- Message: 实时消息,适用于发送普通聊天消息。
- Topic: 主题消息,适用于公告、礼物记录等重要内容。
- Property: 属性消息,适用于保存全局状态等信息。
其中,Message 仅发送给在线用户,Pano 服务器不保存消息记录,如果消息发送时用户不在线,事后是无法收到该消息的,所以非常适合聊天室、直播间的普通即时消息。
Message 又分单点消息(发送给指定用户)和广播消息(发送给频道内所有用户)。
而对于 Topic 和 Property 消息,Pano 服务器会在频道持续时间保存消息记录(在频道被关闭时清空),后加入或者重新加入的用户可以一次性收到所有历史记录。
Topic 和 Property 之间的差异在于,Topic 是增量化的,新内容会增加到旧内容后面,而 Property 是替换性的,新内容会替换旧内容。
简言之,选择逻辑如下:
- 不需要历史记录:Message
- 需要增量型历史记录:Topic
- 需要替换型历史记录:Property
另外:
- 消息接口的调用频率上限为每 3 秒 150 次,消息大小不超过 4 KB。
- 当客户端SDK收到来自服务端API发送的消息时,发送方 userId 统一为 0。
- RTM消息和白板内的消息是不互通的。
各端 SDK 相关接口,请查看下列介绍:
Windows (C++)
如果在加入频道时配置了
serviceFlags
,需要包含kChannelServiceMessage
才能使用实时消息。
通过 RtcEngine
实例的 getMessageService
方法获取消息服务的接口指针(RtcMessage
)。
- 通过其
setCallback
方法设置消息服务的回调。 - 通过其
sendMessage
方法发送消息给指定用户。 - 通过其
broadcastMessage
方法发送广播消息(发送给频道内所有用户)。 - 通过其
publish
方法发布主题消息,subscribe
方法订阅主题,unsubscribe
方法取消订阅主题。 - 通过其
setProperty
方法设置或更新消息服务属性。
macOS/iOS (Objective-C)
如果在加入频道时配置了
serviceFlags
,需要包含kPanoChannelServiceMessage
才能使用实时消息。
通过 PanoRtcEngineKit
实例的 messageService
属性获取消息服务的接口指针(PanoRtcMessage
)。
- 通过其
delegate
属性设置消息服务的回调。 - 通过其
- sendMessageToUser:data:
方法发送消息给指定用户。 - 通过其
- broadcastMessage:sendBack:
方法发送广播消息(发送给频道内所有用户)。 - 通过其
- publishTopic:data:requestId:
方法发布主题消息,- subscribe:
方法订阅主题,- unsubscribe:
方法取消订阅主题。 - 通过其
- setProperty:value:
方法设置或更新消息服务属性。
Android (Java)
如果在加入频道时配置了
serviceFlags
,需要包含kChannelServiceMessage
才能使用实时消息。
通过 RtcEngine
实例的 getMessageService
方法获取消息服务的接口对象(RtcMessageService
)。
- 通过其
setCallback
方法设置消息服务的回调。 - 通过其
sendMessage
方法发送消息给指定用户。 - 通过其
broadcastMessage
方法发送广播消息(发送给频道内所有用户)。 - 通过其
publish
方法发布主题消息,subscribe
方法订阅主题,unsubscribe
方法取消订阅主题。 - 通过其
setProperty
方法设置或更新消息服务属性。
Web
可以通过多种方式获取实时消息模块(
RtcMessage
),具体请 点此查看。
- 通过其
on
方法设置消息服务的回调。 - 通过其
sendMessage
方法发送消息给指定用户。 - 通过其
broadcastMessage
方法发送广播消息(发送给频道内所有用户)。 - 通过其
publishTopicMessage
方法发布主题消息,subscribeTopic
方法订阅主题,unsubscribeTopic
方法取消订阅主题。 - 通过其
setProperty
方法设置或更新消息服务属性。
Electron
Electron SDK 仅支持音视频功能。如需在 Electron 中使用实时消息,请集成 Web SDK 的实时消息功能。
Flutter
如果在加入频道时配置了
serviceFlags
,需要包含Message
才能使用实时消息。
通过 RtcEngineKit
实例的 messageService
方法获取消息服务的接口对象(RtcMessageService
)。
- 通过其
setEventHandler
方法设置消息服务的回调。 - 通过其
sendMessage
方法发送消息给指定用户。 - 通过其
broadcastMessage
方法发送广播消息(发送给频道内所有用户)。 - 通过其
publish
方法发布主题消息,subscribe
方法订阅主题,unsubscribe
方法取消订阅主题。 - 通过其
setProperty
方法设置或更新消息服务属性。
React Native
如果在加入频道时配置了
serviceFlags
,需要包含Message
才能使用实时消息。
通过 RtcEngineKit
实例的 messageService
方法获取消息服务的接口对象(RtcMessageService
)。
- 通过其
addListener
方法设置消息服务的回调。 - 通过其
sendMessage
方法发送消息给指定用户。 - 通过其
broadcastMessage
方法发送广播消息(发送给频道内所有用户)。 - 通过其
publish
方法发布主题消息,subscribe
方法订阅主题,unsubscribe
方法取消订阅主题。 - 通过其
setProperty
方法设置或更新消息服务属性。