SessionManager
简介
SessionManager 是单例模式的,可以通过
SessionManager.getInstance()
获取实例
SessionManager 提供了一些管理多白板和其他类型Session的api,以及频道管理的api。
如果您需要使用多白板,或者单独使用RtcMessage,可以选择使用SessionManager入会。
Properties
exitSessions
• exitSessions: { id
: string ; type
: SessionType }[]= []
当前channel中存在的session列表
isConnected
• isConnected: boolean= false
是否连接到 server
Methods
addListener
▸ addListener<T>(event
: T, fn
: (...args
: any[]) => void, context?
: any): SessionManager
Type parameters
Name | Type | |
---|---|---|
T | string \ | symbol |
Parameters
Name | Type |
---|---|
event | T |
fn | (...args : any[]) => void |
context? | any |
添加事件监听
Returns: SessionManager
batchOff
▸ batchOff(events
: string[]): void
Parameters
Name | Type |
---|---|
events | string[] |
批量取消事件监听,该事件所有的监听都会被取消
Returns: void
closeChannel
▸ closeChannel(): StatusCode)
关闭频道,所有频道内的用户都会被清理出去,所有的白板、标注白板、RtcMessage也会强制结束
Returns: StatusCode)
getAnnotationWhiteboard
▸ getAnnotationWhiteboard(tragetUserId
: string, sourceType
: "video"
| "share"
, videoSourceIndex?
: number): undefined | AnnotationWhiteboard
获取标绘白板实例
所有用户自行创建的标绘白板都会存储在 SessionManager 中,当标注结束(某个用户主动调用closeSession,其他用户会收到标注结束事件)时会自动清除
Parameters
Name | Type | Default value | |
---|---|---|---|
tragetUserId | string | - | |
sourceType | "video" \ | "share" | - |
videoSourceIndex | number | 0 |
videoSourceIndex 是当要获取视频标注(sourceType = 'video')时,如果有多个视频流(例如用户使用多摄像头),指定对应的视频流index
Returns: undefined | AnnotationWhiteboard
getRoster
▸ getRoster(): { name
: string ; userData
: string ; userId
: string }[]
获取已经加入当前 Channel 中的用户列表
Returns: { name
: string ; userData
: string ; userId
: string }[]
getWhiteboard
▸ getWhiteboard(wbId
: string): undefined | RtcWhiteboard
通过id获取白板实例
所有用户自行创建的白板都会存储在 SessionManager 中,当白板session被关闭(某个用户主动调用closeSession,其他用户会收到白板关闭事件)时会自动清除
Parameters
Name | Type |
---|---|
wbId | string |
Returns: undefined | RtcWhiteboard
joinChannel
▸ joinChannel(option
: { appId
: string ; channelId
: string ; name
: string ; token
: string ; userId
: string }, onFail
: (result
: StatusCode)) => any): QResult
加入频道,入会成功时会触发 SessionManager.Events.channelAvailable
事件
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
kickOff
▸ kickOff(userId
: string): void
将某个用户从频道内踢出
Parameters
Name | Type |
---|---|
userId | string |
Returns: void
leaveChannel
离开频道,其他用户会收到当前用户离开的事件(SessionManager.Events.channelUserLeave
)
▸ leaveChannel(): StatusCode)
Returns: StatusCode)
listWhiteboard
▸ listWhiteboard(): RtcWhiteboard[]
获取当前缓存的所有白板
Returns: RtcWhiteboard[]
off
▸ off<T>(event
: T, fn?
: (...args
: any[]) => void, context?
: any, once?
: boolean): SessionManager
取消事件监听
Type parameters
Name | Type | |
---|---|---|
T | string \ | symbol |
Parameters
Name | Type |
---|---|
event | T |
fn? | (...args : any[]) => void |
context? | any |
once? | boolean |
Returns: SessionManager
on
▸ on<T>(event
: T, fn
: (...args
: any[]) => void, context?
: any): SessionManager
添加事件监听
Type parameters
Name | Type | |
---|---|---|
T | string \ | symbol |
Parameters
Name | Type |
---|---|
event | T |
fn | (...args : any[]) => void |
context? | any |
Returns: SessionManager
once
▸ once<T>(event
: T, fn
: (...args
: any[]) => void, context?
: any): SessionManager
为给定事件添加单次事件监听,触发后会自动去除
Type parameters
Name | Type | |
---|---|---|
T | string \ | symbol |
Parameters
Name | Type |
---|---|
event | T |
fn | (...args : any[]) => void |
context? | any |
Returns: SessionManager
removeAllListeners
▸ removeAllListeners(event?
: string | symbol): SessionManager
删除所有监听事件,或者仅删除传入的事件的监听
Parameters
Name | Type | |
---|---|---|
event? | string \ | symbol |
Returns: SessionManager
removeListener
▸ removeListener<T>(event
: T, fn?
: (...args
: any[]) => void, context?
: any, once?
: boolean): SessionManager
删除给的事件的回调
Type parameters
Name | Type | |
---|---|---|
T | string \ | symbol |
Parameters
Name | Type |
---|---|
event | T |
fn? | (...args : any[]) => void |
context? | any |
once? | boolean |
Returns: SessionManager
removeWhiteboard
▸ removeWhiteboard(wbId
: string): void
删除缓存的白板
Parameters
Name | Type |
---|---|
wbId | string |
Returns: void
subscribeMessage
▸ subscribeMessage(subject
: string): void
监听某个主题的消息
Parameters
Name | Type |
---|---|
subject | string |
Returns: void
unsubscribeMessage
▸ unsubscribeMessage(subject
: string): void
取消监听某个主题的消息
Parameters
Name | Type |
---|---|
subject | string |
Returns: void
updateGlobalUserData
▸ updateGlobalUserData(userName
: string, userData
: string): StatusCode)
更新频道用户数据
Parameters
Name | Type |
---|---|
userName | string |
userData | string |
Returns: StatusCode)
getInstance
获取 SessionManager 实例
▸ Static
getInstance(): SessionManager
Returns: SessionManager
Events
SessionManager 实例会在某些事件发生时触发对应的事件,开发者可以监听这些事件设置响应的处理方法
channelAvailable
入会(joinChannel)成功时触发该事件
channelCountDown
频道倒计时
SessionManager.getInstance().on(
SessionManager.Events.channelCountDown,
(remainSeconds: number) => {
console.log('remainSeconds', remainSeconds);
}
);
channelUserJoin
用户加入频道中
SessionManager.getInstance().on(
SessionManager.Events.channelUserJoin,
(userId: string) => {
console.log('channelUserJoin', userId);
}
);
channelUserLeave
用户离开频道
SessionManager.getInstance().on(
SessionManager.Events.channelUserLeave,
(userId: string) => {
console.log('channelUserLeave', userId);
}
);
channelUserUpdate
频道中用户更新
SessionManager.getInstance().on(
SessionManager.Events.channelUserUpdate,
(userId: string) => {
console.log('channelUserUpdate', userId);
}
);
readyStateChanged
SessionManager 和server连接状态变化
SessionManager.getInstance().on(
SessionManager.Events.readyStateChanged,
(state: {ready: boolean; type: 'join'|'failover'|'left'; message: string;}) => {
console.log('readyStateChanged', state);
}
);
remoteControlConnected
远程控制连接建立事件
其他端创建远程连接对象后,本端会收到该事件,远程控制对象(RtcController
)会被创建出来作为回调参数
SessionManager.getInstance().on(
SessionManager.Events.remoteControlConnected,
(rtcController: RtcController) => {
console.log('remoteControlConnected, remote userId', rtcController.targetUserId);
}
);
shareAnnotationStart
共享标注开始事件
其他端创建共享标注白板对象后,本端会收到该事件
SessionManager.getInstance().on(
SessionManager.Events.shareAnnotationStart,
(userId: string) => {
console.log('shareAnnotationStart', userId)
}
);
shareAnnotationStop
共享标注结束事件
其他端结束标注,或者关闭共享标注白板session后,本端会收到该事件
SessionManager.getInstance().on(
SessionManager.Events.shareAnnotationStop,
(userId: string) => console.log('shareAnnotationStop', userId)
);
subjectMessageReceived
关注的 subject 收到新的消息
SessionManager.getInstance().on(
SessionManager.Events.subjectMessageReceived,
(data: { subject: string; userId: string, data: any }) => {
console.log('subjectMessageReceived', data)
}
);
videoAnnotationStart
视频标注开始事件
其他端创建视频标注白板对象后,本端会收到该事件
SessionManager.getInstance().on(
SessionManager.Events.videoAnnotationStart,
(userId: string) => {
console.log('videoAnnotationStart', userId)
}
);
videoAnnotationStop
视频标注结束事件
其他端结束标注,或者关闭视频标注白板session后,本端会收到该事件
SessionManager.getInstance().on(
SessionManager.Events.videoAnnotationStop,
(userId: string) => {
console.log('videoAnnotationStop', userId)
}
);
whiteboardFailover
白板(SessionManager)failover事件
开发者可以监听这个事件,在发生 failover(服务不可用)时弹出提示给用户,sdk会自动尝试重连,开发者不需要再做其他额外的处理
SessionManager.getInstance().on(
SessionManager.Events.whiteboardFailover,
(data: {state: 'Reconnecting' | 'Success' | 'Failed', msg: string}) => {
console.log('whiteboardFailover', data)
}
);
whiteboardSessioClose
白板session关闭事件
SessionManager.getInstance().on(
SessionManager.Events.whiteboardSessioClose,
(sessionId: string) => {
console.log('whiteboardSessioClose', sessionId)
}
);
whiteboardSessioStart
白板session创建事件
其他端新创建白板(RtcWhiteboard),本端会收到这个事件,收到事件后,sdk不会自动创建白板对象,需要开发者自行创建
SessionManager.getInstance().on(
SessionManager.Events.whiteboardSessioStart,
(sessionId: string) => {
console.log('whiteboardSessioStart', sessionId)
}
);