RtcMessage
简介
- RtcMessage 是单例模式的,可以通过
RtcMessage.getInstance()获取实例,也可以通过RtsService.getInstance().getRtcMessage()获取实例。- RtsService 和 RtcMessage 都可以从 panortc 或 panorts SDK中导出。
RtcMessage 用来给频道内的其他用户发送即时消息。
RtcMessage 会在 joinChannel 成功后自动连接,有三种方式初始化 RtcMessage:
- 如果您使用
@pano.video/panortc,可以在调用rtcEngine的joinChannel方法时,选择合适的入会类型(除了JoinChannelType.mediaOnly之外的其他类型),RtcMessage会在入会成功后自动连接 - 如果您使用
@pano.video/panorts,可以直接使用RtcWhiteboard实例入会,RtcMessage会在joinChannel成功后自动连接 - 如果您使用
@pano.video/panorts,但不需要使用白板,或者不需要在刚加入频道时就白板,可以使用 RtsService 入会,RtcMessage会在joinChannel成功后自动连接
Properties
sessionProperty
• sessionProperty: object= {}
session 自定义属性,通过 setProperty 方法设置
Accessors
isConnected
• get isConnected(): boolean
是否已经连接到服务器
Returns: boolean
Methods
broadcastMessage
▸ broadcastMessage(message: any, sendBack: boolean): QResult
Parameters:
| Name | Type | Description |
|---|---|---|
message | any (字符串或普通对象) | 消息 |
sendBack | boolean | 是否发送给自己 |
广播消息,在频道中的所有用户都会受到该消息
Returns: QResult
getRoster
▸ getRoster(): { name: string ; userData: string ; userId: string }[]
获取在当前会话中所有用户的列表
Returns: { name: string ; userData: string ; userId: string }[]
joinSession
▸ joinSession(): StatusCode
加入RtcMessage会话
注意RtcMessage会在JoinChannel时自动连接,一般情况下开发者不需要主动调用这个方法
Returns: StatusCode
leave
▸ leave(): StatusCode
离开会话,其他用户会收到当前用户离开会话的事件
Returns: StatusCode
off
▸ off<T>(event: T, fn?: (...args: any[]) => void, context?: any, once?: boolean): void
Type parameters
| Name | Type | |
|---|---|---|
T | string \ | symbol |
Parameters:
| Name | Type |
|---|---|
event | T |
fn? | (...args: any[]) => void |
context? | any |
once? | boolean |
取消事件监听
on
▸ on<T>(event: T, fn: (...args: any[]) => void, context?: any): void
Add a listener for a given event.
Type parameters
| Name | Type | |
|---|---|---|
T | string \ | symbol |
Parameters:
| Name | Type |
|---|---|
event | T |
fn | (...args: any[]) => void |
context? | any |
添加事件监听
publishTopicMessage
▸ publishTopicMessage(topic: string, data: any ): void
发布某个主题的消息
Parameters:
| Name | Type |
|---|---|
topic | string |
data | any |
Returns: void
sendMessage
▸ sendMessage(to: string, message: string | Record<string | number | symbol, any>): QResult
向某个用户发送消息
Parameters:
| Name | Type | Description |
|---|---|---|
to | string | 用户id |
message | any | 消息 |
Returns: QResult
setProperty
▸ setProperty(property: string, value?: any, seqId?: number): void
设置 session 自定义属性,设置后会触发 propertyChanged 事件,rtcMessage session 中所有用户都会接收到。
可以通过 sessionProperty 属性获取所有设置的自定义属性。
Parameters:
| Name | Type | Description |
|---|---|---|
property | string | 属性名称 |
value? | any | 属性值 |
Returns: void
subscribeTopic
▸ subscribeTopic(topic: string): void
订阅某个主题的消息,订阅主题之后,会收到 topicMessageReceived 事件
Parameters:
| Name | Type | Description |
|---|---|---|
topic | string | 主题 |
Returns: void
updateUserData
▸ updateUserData(userData: string, userName?: string): StatusCode
更新用户数据,数据会保存在服务器,其他用户会收到 userUpdate 和 rosterUpdate 事件,可从 roster 中获取该数据
Parameters:
| Name | Type |
|---|---|
userName | string |
userData | string |
Returns: StatusCode
unsubscribeTopic
▸ unsubscribeTopic(topic: string): void
取消订阅某个主题的消息
Parameters:
| Name | Type |
|---|---|
topic | string |
Returns: void
getInstance
▸ Static getInstance(): RtcMessage
获取 RtcMessage 实例
Returns: RtcMessage
Events
RtcMessage 实例会在某些事件发生时触发对应的事件,开发者可以监听这些事件设置响应的处理方法
messageReceived
接收到消息
RtcMessage.getInstance().on(
RtcMessage.Events.messageReceived,
({ from: string, message: any }) => {
console.log('messageReceived', from, message);
}
);
propertyChanged
自定义属性更新
RtcMessage.getInstance().on(
RtcMessage.Events.propertyChanged,
(type: 'update' | 'delete', propName: string, propValue: any)
=> console.log('propertyChanged', type, propName, propValue)
);
rosterUpdate
用户列表更新
RtcMessage.getInstance().on(
RtcMessage.Events.messageReceived,
({ from: string, message: any }) => {
console.log('messageReceived', from, message);
}
);
sessionReady
当实例连接到服务器时触发
sessionClosed
当前实例被关闭时触发
serviceStateChanged
服务连接状态变化
RtcMessage.getInstance().on(
RtcMessage.Events.serviceStateChanged,
({ isConnected: boolean, reason: StatusCode }) => {
console.log('serviceStateChanged', isConnected, reason);
}
);
topicMessageReceived
当订阅了某个主题的消息之后,收到在该主题下发布的消息
RtcMessage.getInstance().on(
RtcMessage.Events.topicMessageReceived,
(topic: string, from: string, message: any) => console.log(topic, from, message)
);
userJoin
用户加入
RtcMessage.getInstance().on(
RtcMessage.Events.userJoin,
(userId: string) => {
console.log('userJoin', userId);
}
);
userLeave
用户离开
RtcMessage.getInstance().on(
RtcMessage.Events.userLeave,
(userId: string) => {
console.log('userLeave', userId);
}
);
userUpdate
用户信息更新,如用户名,用户数据等
RtcMessage.getInstance().on(
RtcMessage.Events.userUpdate,
(userId: string) => {
console.log('userUpdate', userId);
}
);
