fcr-core
Version:
Core APIs for building online scenes
116 lines (115 loc) • 3.41 kB
TypeScript
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;