Pano开发者中心
  • 文档中心
  • 下载中心

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

NameType
Tstring \symbol

Parameters

NameType
eventT
fn(...args: any[]) => void
context?any

添加事件监听

Returns: SessionManager


batchOff

▸ batchOff(events: string[]): void

Parameters

NameType
eventsstring[]

批量取消事件监听,该事件所有的监听都会被取消

Returns: void


closeChannel

▸ closeChannel(): StatusCode)

关闭频道,所有频道内的用户都会被清理出去,所有的白板、标注白板、RtcMessage也会强制结束

Returns: StatusCode)


getAnnotationWhiteboard

▸ getAnnotationWhiteboard(tragetUserId: string, sourceType: "video" | "share", videoSourceIndex?: number): undefined | AnnotationWhiteboard

获取标绘白板实例

所有用户自行创建的标绘白板都会存储在 SessionManager 中,当标注结束(某个用户主动调用closeSession,其他用户会收到标注结束事件)时会自动清除

Parameters

NameTypeDefault value
tragetUserIdstring-
sourceType"video" \"share"-
videoSourceIndexnumber0

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

NameType
wbIdstring

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

NameType
optionobject
option.appIdstring
option.channelIdstring
option.namestring
option.tokenstring
option.userIdstring
onFail(result: StatusCode)) => any

Returns: QResult


kickOff

▸ kickOff(userId: string): void

将某个用户从频道内踢出

Parameters

NameType
userIdstring

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

NameType
Tstring \symbol

Parameters

NameType
eventT
fn?(...args: any[]) => void
context?any
once?boolean

Returns: SessionManager


on

▸ on<T>(event: T, fn: (...args: any[]) => void, context?: any): SessionManager

添加事件监听

Type parameters

NameType
Tstring \symbol

Parameters

NameType
eventT
fn(...args: any[]) => void
context?any

Returns: SessionManager


once

▸ once<T>(event: T, fn: (...args: any[]) => void, context?: any): SessionManager

为给定事件添加单次事件监听,触发后会自动去除

Type parameters

NameType
Tstring \symbol

Parameters

NameType
eventT
fn(...args: any[]) => void
context?any

Returns: SessionManager


removeAllListeners

▸ removeAllListeners(event?: string | symbol): SessionManager

删除所有监听事件,或者仅删除传入的事件的监听

Parameters

NameType
event?string \symbol

Returns: SessionManager


removeListener

▸ removeListener<T>(event: T, fn?: (...args: any[]) => void, context?: any, once?: boolean): SessionManager

删除给的事件的回调

Type parameters

NameType
Tstring \symbol

Parameters

NameType
eventT
fn?(...args: any[]) => void
context?any
once?boolean

Returns: SessionManager


removeWhiteboard

▸ removeWhiteboard(wbId: string): void

删除缓存的白板

Parameters

NameType
wbIdstring

Returns: void


subscribeMessage

▸ subscribeMessage(subject: string): void

监听某个主题的消息

Parameters

NameType
subjectstring

Returns: void


unsubscribeMessage

▸ unsubscribeMessage(subject: string): void

取消监听某个主题的消息

Parameters

NameType
subjectstring

Returns: void


updateGlobalUserData

▸ updateGlobalUserData(userName: string, userData: string): StatusCode)

更新频道用户数据

Parameters

NameType
userNamestring
userDatastring

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)
  }
);
Last updated on 5/11/2021
  • 简介
  • Properties
    • exitSessions
    • isConnected
  • Methods
    • addListener
    • batchOff
    • closeChannel
    • getAnnotationWhiteboard
    • getRoster
    • getWhiteboard
    • joinChannel
    • kickOff
    • leaveChannel
    • listWhiteboard
    • off
    • on
    • once
    • removeAllListeners
    • removeListener
    • removeWhiteboard
    • subscribeMessage
    • unsubscribeMessage
    • updateGlobalUserData
    • getInstance
  • Events
    • channelAvailable
    • channelCountDown
    • channelUserJoin
    • channelUserLeave
    • channelUserUpdate
    • readyStateChanged
    • remoteControlConnected
    • shareAnnotationStart
    • shareAnnotationStop
    • subjectMessageReceived
    • videoAnnotationStart
    • videoAnnotationStop
    • whiteboardFailover
    • whiteboardSessioClose
    • whiteboardSessioStart
浙ICP备20002645号 ©2019-2021 Pano拍乐云