yimultiscreenserver-sdk-web
Version:
YiMultiScreenServer SDK for Web
142 lines • 7.75 kB
TypeScript
import { HTTPConfig } from "../config/HTTPConfig";
import { IHttpRequester } from "../core/http/IHttpRequester";
import { MQTTLogic } from "../core/mqtt/MQTTLogic";
import { IControllerMQTTCallback } from "../core/mqtt/impl/IControllerMQTTCallback";
import { BindDeviceAction } from "../core/mqtt/message/BindDeviceAction";
import { SessionAction } from "../core/mqtt/message/SessionAction";
import { CastError } from "../util/CastError";
import { AccountBindDeviceVO } from "../vo/account/AccountBindDeviceVO";
import { LoginUserVO } from "../vo/account/LoginUserVO";
import { CastProtocol } from "../vo/cast/CastProtocol";
import { CastSessionVO } from "../vo/cast/CastSessionVO";
import { CastType } from "../vo/cast/CastType";
import { ControllerDeviceType } from "../vo/device/ControllerDeviceType";
import { ControllerDeviceVO } from "../vo/device/ControllerDeviceVO";
import { DevicePair } from "../vo/device/DevicePair";
import { DisplayDeviceVO } from "../vo/device/DisplayDeviceVO";
import { P2PKeyVO } from "../vo/p2p/P2PKeyVO";
import { DisplayReportVO } from "../vo/report/DisplayReportVO";
import { IControllerCallback } from "./IControllerCallback";
import { SessionDestroyReason } from '../core/mqtt/message/SessionDestroyReason';
export declare class ControllerManager implements IControllerMQTTCallback {
private readonly TAG;
private readonly jsonParser;
private readonly p2pKeyFromPeer;
private readonly httpRequestExecutor;
private readonly cache;
private guid;
private mqttLogic;
private callback;
constructor();
setGuid(guid: string): this;
setCallback(callback: IControllerCallback): this;
setHttpRequester(requester: IHttpRequester): this;
setHttpConfig(config: HTTPConfig): this;
setMQTTLib(mqtt: MQTTLogic): this;
createControllerDevice(controllerDevice: ControllerDeviceVO): this;
updateControllerType(type: ControllerDeviceType): this;
updateNetwork(ip: string, gateway: string, mask: string): this;
/**
* 阻塞方法,控制终端给指定手机号发送注册/登录验证码
* 请使用Task调用,不需要在Task中进行await,因为函数结果是通过回调触发
* @param phoneNumber 手机号
*/
requestVerifyCode(phoneNumber: string): Promise<boolean>;
private subscribeAccountTopic;
private unsubscribeAccountTopic;
/**
* 阻塞方法,控制终端通过手机号和短信验证码登录账号,如果账号不存在则自动注册
* 返回值为空意味着登录失败,请检查错误信息
* @param phoneNumber 手机号
* @param verifyCode 短信验证码
* @returns LoginUserVO | null 登录成功后返回用户信息,失败则返回null
*/
login(phoneNumber: string, verifyCode: string): Promise<LoginUserVO | null>;
/**
* 阻塞方法,控制终端登录账号后,将access token存储下来,每次启动如果本地有access token,则调用此方法
* 此方法如果未正常返回,则说明需要通过UI引导用户重新登录,刷新access token
* 返回值为空意味着刷新失败,请检查错误信息
* @param accessToken: 控制端登录账号成功后拿到的唯一令牌
* @returns LoginUserVO | null 登录成功后返回用户信息,失败则返回null
*/
refresh(accessToken: string): Promise<LoginUserVO | null>;
/**
* 阻塞方法,控制终端登录账号后,退出登录此账号
* @param user: 已登录账号的用户信息
* @returns boolean 退出成功返回true,否则返回false
*/
logout(user: LoginUserVO): Promise<boolean>;
/**
* 阻塞方法,控制终端注销指定账号(已登录的账号)
* @param user: 已登录账号的用户信息
* @returns boolean 注销成功返回true,否则返回false
*/
unRegister(user: LoginUserVO): Promise<boolean>;
/**
* 阻塞方法,控制终端登录账号后,获取此账号下所有已绑定的显示设备
* @param accessToken: 控制端登录账号成功后拿到的唯一令牌
* @returns AccountBindDeviceVO[] | null 已绑定的显示设备列表,失败则返回null
*/
getAllBoundDevices(accessToken: string): Promise<AccountBindDeviceVO[] | null>;
/**
* 阻塞方法,控制终端登录账号后,对指定显示终端与本账号建立绑定关系
* @param accessToken: 控制端登录账号成功后拿到的唯一令牌
* @param displayDeviceId 显示终端设备ID
* @param alias 显示终端设备别名
* @returns AccountBindDeviceVO | null 绑定的显示设备,失败则返回null
*/
bindDisplay(displayDeviceId: string, alias: string, accessToken: string): Promise<AccountBindDeviceVO | null>;
/**
* 阻塞方法,控制终端登录账号后,对指定的已绑定的显示设备进行更新,更新其别名(UI展示名称)
* @param accessToken: 控制端登录账号成功后拿到的唯一令牌
* @param alias 显示终端设备别名
* @param displayDeviceId 显示终端设备ID
* @returns AccountBindDeviceVO | null 绑定的显示设备,失败则返回null
*/
updateBindDisplayAlias(displayDeviceId: string, alias: string, accessToken: string): Promise<AccountBindDeviceVO | null>;
/**
* 阻塞方法,控制终端登录账号后,解除指定显示终端与此账号之间的绑定关系
* @param accessToken: 控制端登录账号成功后拿到的唯一令牌
* @param displayDeviceId 显示终端设备ID
* @returns 解除绑定成功返回true,失败则返回false
*/
unBindDisplay(displayDeviceId: string, accessToken: string): Promise<boolean>;
connectDisplay(displayCode: number): Promise<DevicePair | null>;
disconnectDisplay(displayCode: number): Promise<DisplayDeviceVO | null>;
createCastSession(castType: CastType, protocol: CastProtocol, accessToken?: string): Promise<CastSessionVO | null>;
/**
* 投屏会话接收端通知发送端自己已经做好准备,发送端可以准备开始往指定的投屏会话推流
* 会触发发送端的 onReadyToPush 函数
* @param sessionId 要推流的投屏会话id
*/
readyToPush(sessionId: number): void;
startPush(sessionId: number, mediaPayload: string): void;
stopPush(sessionId: number): void;
private generateMediaPayload;
private sendCastSessionMessage;
/**
* 主动销毁投屏会话,携带销毁原因
* @param sessionId 试图销毁的投屏会话id
* @param reason 销毁原因,可选
* @returns 如果会话成功被销毁则返回会话数据类,否则返回null
*/
destroyCastSession(sessionId: number, reason?: SessionDestroyReason): Promise<CastSessionVO | null>;
destroyAllCastSessions(): Promise<void>;
/**
* 阻塞方法,控制终端主动告知显示端,当前投屏会话出现异常需要处理(停推、停收、销毁)
* @param sessionId 异常投屏会话id
* @param error 异常原因
*/
castSessionError(sessionId: number, error: string | CastError): void;
sendPrivateData(data: string): void;
getP2PKey(): P2PKeyVO | null;
onServerDied(): void;
onDisplayDied(): void;
onMySelfDisconnected(cause: string): void;
onDisplayReport(report: DisplayReportVO): void;
onCastSession(session: CastSessionVO, action: SessionAction, mediaPayload: string, reason?: SessionDestroyReason): void;
private readonly isValidMyDataType;
onUserHasBeenKicked(user: LoginUserVO): void;
onAccountBindDevice(accountBindDevice: AccountBindDeviceVO, action: BindDeviceAction): void;
}
//# sourceMappingURL=ControllerManager.d.ts.map