UNPKG

fcr-core

Version:

Core APIs for building online scenes

116 lines (115 loc) 3.41 kB
import { FcrRemoteControlSessionParamsSchema } from '../schema'; export declare enum FcrRemoteControlState { /** * 远程控制请求已接收 */ REQUEST_RECEIVED = 0, /** * 远程控制请求已接受 */ REQUEST_ACCEPTED = 1, /** * 远程控制请求已拒绝 */ REQUEST_REJECTED = 2, /** * 远程远控连接已初始化 */ CONNECT_INITIALIZED = 3, /** * 远程远控连接已建立 */ CONNECT_ESTABLISHED = 4, /** * 远程控制会话已结束 */ SESSION_ENDED = 5 } export type FcrRemoteControlSessionParams = FcrRemoteControlSessionParamsSchema; export type FcrRemoteControlInfo = { sessionId: string; state: FcrRemoteControlState; controllerId: string; controlleeId: string; }; export type FcrRemoteControlExtra = Omit<FcrRemoteControlInfo, 'state'> & { fromUserId: string; receiverId: string; cause?: Record<string, unknown>; }; export interface FcrRemoteControl { /** * 获取远程控制状态 */ getRemoteControlState(): FcrRemoteControlState | null; /** * 开始远程控制请求 * @param params FcrRemoteControlSessionParams */ startRemoteControlRequest(params: FcrRemoteControlSessionParams): Promise<string | null>; /** * 接受远程控制请求(共享端调用) * @param sessionId */ acceptRemoteControlRequest(sessionId: string, cause?: Record<string, unknown>): Promise<void>; /** * 拒绝远程控制请求(共享端调用) * @param sessionId */ rejectRemoteControlRequest(sessionId: string, cause?: Record<string, unknown>): Promise<void>; /** * 更新远程控制连接状态 * @param sessionId * @param state * @param cause */ updateRemoteControlConnectionState(sessionId: string, state: FcrRemoteControlConnectionState, cause?: Record<string, unknown>): Promise<void>; /** * 停止远程控制请求或结束远程控制会话 * @param sessionId */ terminateRemoteControl(sessionId: string, cause?: Record<string, unknown>): Promise<void>; /** * 添加远程控制观察者 * @param observer FcrRemoteObserver */ addObserver(observer: FcrRemoteObserver): void; /** * 移除远程控制观察者 * @param observer FcrRemoteObserver */ removeObserver(observer: FcrRemoteObserver): void; /** * 销毁远程控制器,释放资源 */ release(): Promise<void>; } export interface FcrRemoteObserver { /** * 监听远程控制状态变化 * @param state * @param extra */ onRemoteControlStateChanged?: (state: FcrRemoteControlState, extra: FcrRemoteControlExtra) => void; } /** * The action of the remote control session. * 0: request * 1: accept * 2: reject * 3: end */ export type FcrRemoteControlSessionAction = 0 | 1 | 2 | 3; /** * The action of the remote control session server response or request. * 0: receive * 1: accept */ export type FcrRemoteControlServerAction = 0 | 1; export type FcrRemoteLocalControlSession = FcrRemoteControlSessionParams & { interval: number; nextTs: number; startTs: number; action: FcrRemoteControlServerAction; }; export type FcrRemoteControlConnectionState = FcrRemoteControlState.CONNECT_INITIALIZED | FcrRemoteControlState.CONNECT_ESTABLISHED;