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);
}
);