RtsService
简介
RtsService 提供多白板、RtcMessage
、Annotation
、RemoteControl
,以及频道管理的 API。
获取实例
RtsService 是单例模式的。
- 如果通过 import 的方式导入 SDK (如下示例),那么可以通过
RtsService.getInstance()
获取实例。import { RtsService } from "@pano.video/panortc";
import { RtsService } from "@pano.video/panorts";
- 如果将 panortc-x.x.x.js 加载到 HTML,那么可以通过
PanoRtc.RtsService.getInstance()
获取实例。
Properties
isConnected
• isConnected: boolean= false
是否连接到 server
Methods
batchOff
▸ batchOff(events
: string[]): void
Parameters:
Name | Type |
---|---|
events | string[] |
批量取消事件监听,该事件所有的监听都会被取消
Returns: void
getAnnotation
▸ getAnnotation(annotationId
: string, sourceType
: "video" | "share" | "external"
, videoSourceIndex?
: number): Annotation
获取标注白板实例,如果没有会自动创建实例
所有用户创建的标注白板对象也都会存储在 RtsService 中,当标注结束(某个用户主动调用 stop
方法,其他用户会收到标注结束事件)时会自动清除
Parameters:
Name | Type | Default value |
---|---|---|
annotationId | string | - |
sourceType | "video" | "share" | "external" | - |
videoSourceIndex | number | 0 |
videoSourceIndex: 获取视频标注(sourceType 为 "video")时,如果有多个视频流(例如用户使用多摄像头),指定对应的视频流 index
Returns: Annotation
getI18nConfig
获取当前 i18n 配置
▸ getI18nConfig(): object
Returns: object
getRoster
▸ getRoster(): UserInfo []
获取已经加入当前 Channel 中的用户列表
Returns: UserInfo[]
type UserInfo = {
name: string
userId: string
userData: string // 自定义用户数据
joinTime: string
nid: string
os: 'android' | 'browser' | 'ios' | 'linux' | 'mac' | 'unknown' | 'windows'
}
getWhiteboard
▸ getWhiteboard(wbId
: string): RtcWhiteboard
通过 wbId
获取白板实例,如果没有会自动创建
所有用户自行创建的白板也都会存储在 RtsService 中,当白板 session 被关闭时(某个用户主动调用 stop
方法,其他用户会收到白板关闭事件)会自动清除
Parameters:
Name | Type |
---|---|
wbId | string |
Returns: RtcWhiteboard
getRtcMessage
▸ getRtcMessage(): RtcMessage
获取 RtcMessage 的实例
Returns: RtcMessage
isUserAnnotationOn
▸ isUserAnnotationOn(annotationId
: string, sourceType
: "video"
| "share" | "external"
, videoSourceIndex?
: number): boolean
某个用户是否开启了白板
Parameters:
Name | Type | Default value |
---|---|---|
annotationId | string | - |
sourceType | "video" | "share" | "external" | - |
videoSourceIndex | number | 0 |
Returns: boolean
joinChannel
▸ joinChannel(option
: { appId
: string ; channelId
: string ; name
: string ; token
: string ; userId
: string }, onSuccess
: (): any , onFail
: (result
: StatusCode) => any): QResult
加入频道,入会成功时会触发 RtsService.Events.channelJoinSuccess
事件
Parameters:
Name | Type |
---|---|
option | object |
option.appId | string |
option.channelId | string |
option.name | string |
option.token | string |
option.userId | string |
onFail | (result : StatusCode) => any |
Returns: QResult
leaveChannel
离开频道,其他用户会收到当前用户离开的事件(RtsService.Events.channelUserLeave
)
▸ leaveChannel(): StatusCode
Returns: StatusCode
listWhiteboard
▸ listWhiteboard(): RtcWhiteboard[]
获取当前缓存的所有白板
Returns: RtcWhiteboard[]
off
▸ off<T>(event
: T, fn?
: (...args
: any[]) => void, context?
: any, once?
: boolean): RtsService
取消事件监听
Type parameters
Name | Type | |
---|---|---|
T | string \ | symbol |
Parameters:
Name | Type |
---|---|
event | T |
fn? | (...args : any[]) => void |
context? | any |
once? | boolean |
Returns: RtsService
on
▸ on<T>(event
: T, fn
: (...args
: any[]) => void, context?
: any): RtsService
添加事件监听
Type parameters
Name | Type | |
---|---|---|
T | string \ | symbol |
Parameters:
Name | Type |
---|---|
event | T |
fn | (...args : any[]) => void |
context? | any |
Returns: RtsService
once
▸ once<T>(event
: T, fn
: (...args
: any[]) => void, context?
: any): RtsService
为给定事件添加单次事件监听,触发后会自动去除
Type parameters
Name | Type | |
---|---|---|
T | string \ | symbol |
Parameters:
Name | Type |
---|---|
event | T |
fn | (...args : any[]) => void |
context? | any |
Returns: RtsService
removeAllListeners
▸ removeAllListeners(event?
: string | symbol): RtsService
删除所有监听事件,或者仅删除传入的事件的监听
Parameters:
Name | Type | |
---|---|---|
event? | string \ | symbol |
Returns: RtsService
removeListener
▸ removeListener<T>(event
: T, fn?
: (...args
: any[]) => void, context?
: any, once?
: boolean): RtsService
删除给的事件的回调
Type parameters
Name | Type | |
---|---|---|
T | string \ | symbol |
Parameters:
Name | Type |
---|---|
event | T |
fn? | (...args : any[]) => void |
context? | any |
once? | boolean |
Returns: RtsService
removeWhiteboard
▸ removeWhiteboard(wbId
: string): void
删除缓存的白板
Parameters:
Name | Type |
---|---|
wbId | string |
Returns: void
saveLogs
▸ saveLogs(fileName?
: string): void
保存日志,会直接下载到本地
Parameters:
Name | Type |
---|---|
fileName | string |
Returns: void
setI18nConfig
设置 i18n 配置,可以只设置部分,会和当前配置合并
▸ setI18nConfig(config
: any): void
Parameters:
Name | Type |
---|---|
config | any |
Returns: void
setLocale
▸ setLocale(locale
: string): void
设定语言,默认配置包含 zh_CN、zh_TW、en、de、fr、ja、ko
Parameters:
Name | Type |
---|---|
locale | string |
Returns: void
updateUserData
▸ updateUserData(userData
: string, userName
?: string): StatusCode
更新用户数据,数据会保存在服务器,其他用户会收到 userUpdate
和 rosterUpdate
事件,可从 roster 中获取该数据
Parameters:
Name | Type |
---|---|
userName | string |
userData | string |
Returns: StatusCode
getInstance
获取 RtsService 实例
▸ Static
getInstance(): RtsService
Returns: RtsService
Events
RtsService 实例会在某些事件发生时触发对应的事件,开发者可以监听这些事件设置响应的处理方法
channelJoinSuccess
入会(joinChannel)成功时触发该事件
channelCountDown
频道倒计时
RtsService.getInstance().on(
RtsService.Events.channelCountDown,
(remainSeconds: number) => {
console.log('remainSeconds', remainSeconds);
}
);
userJoin
用户加入频道中
RtsService.getInstance().on(
RtsService.Events.userJoin,
(userId: string, userInfo: any) => {
console.log('userJoin', userId, userInfo);
}
);
userLeave
用户离开频道
RtsService.getInstance().on(
RtsService.Events.userLeave,
(userId: string) => {
console.log('userLeave', userId);
}
);
userUpdate
频道中用户更新
RtsService.getInstance().on(
RtsService.Events.userUpdate,
(userId: string) => {
console.log('userUpdate', userId);
}
);
readyStateChanged
RtsService 和server连接状态变化
RtsService.getInstance().on(
RtsService.Events.readyStateChanged,
(state: {ready: boolean; type: 'join'|'failover'|'left'; message: string;}) => {
console.log('readyStateChanged', state);
}
);
remoteControlConnected
远程控制连接建立事件
其他端创建远程连接对象后,本端会收到该事件,远程控制对象(RtcController
)会被创建出来作为回调参数
RtsService.getInstance().on(
RtsService.Events.remoteControlConnected,
(rtcController: RtcController) => {
console.log('remoteControlConnected, remote userId', rtcController.targetUserId);
}
);
shareAnnotationStart
共享标注开始事件
其他端创建共享标注白板对象后,本端会收到该事件
RtsService.getInstance().on(
RtsService.Events.shareAnnotationStart,
(annotationId: string) => {
console.log('shareAnnotationStart', annotationId)
}
);
shareAnnotationStop
共享标注结束事件
其他端结束标注,或者关闭共享标注白板session后,本端会收到该事件
RtsService.getInstance().on(
RtsService.Events.shareAnnotationStop,
(annotationId: string) => console.log('shareAnnotationStop', annotationId)
);
videoAnnotationStart
视频标注开始事件
其他端创建视频标注白板对象后,本端会收到该事件
RtsService.getInstance().on(
RtsService.Events.videoAnnotationStart,
(annotationId: string) => {
console.log('videoAnnotationStart', annotationId)
}
);
videoAnnotationStop
视频标注结束事件
其他端结束标注,或者关闭视频标注白板session后,本端会收到该事件
RtsService.getInstance().on(
RtsService.Events.videoAnnotationStop,
(annotationId: string) => {
console.log('videoAnnotationStop', annotationId)
}
);
externalAnnotationStart
外部标注开始事件
其他端创建视频标注白板对象后,本端会收到该事件
RtsService.getInstance().on(
RtsService.Events.externalAnnotationStart,
(annotationId: string) => {
console.log('externalAnnotationStart', annotationId)
}
);
externalAnnotationStop
外部标注结束事件
其他端结束标注,或者关闭视频标注白板session后,本端会收到该事件
RtsService.getInstance().on(
RtsService.Events.externalAnnotationStop,
(annotationId: string) => {
console.log('externalAnnotationStop', annotationId)
}
);
failover
RtsService failover事件
开发者可以监听这个事件,在发生 failover(服务不可用)时弹出提示给用户,sdk会自动尝试重连,开发者不需要再做其他额外的处理
RtsService.getInstance().on(
RtsService.Events.failover,
(data: {state: 'Reconnecting' | 'Success' | 'Failed', msg: string}) => {
console.log('failover', data)
}
);
whiteboardStart
白板session创建事件
其他端新创建白板(RtcWhiteboard),本端会收到这个事件,收到事件后,sdk不会自动创建白板对象,需要开发者自行创建
RtsService.getInstance().on(
RtsService.Events.whiteboardStart,
(sessionId: string) => {
console.log('whiteboardStart', sessionId)
}
);
whiteboardStop
白板session停止事件
RtsService.getInstance().on(
RtsService.Events.whiteboardStop,
(sessionId: string) => {
console.log('whiteboardStop', sessionId)
}
);