@hongtangyun/rooms-sdk
Version:
JavaScript SDK Client for hongtangyun rooms-sdk.
284 lines (283 loc) • 7.85 kB
TypeScript
/// <reference types="node" />
import { AxiosRequestConfig } from 'axios';
import { EventEmitter } from 'events';
import { Config, COS_INFO, MicroTempInfo, OSS_INFO, RoomActionsItem, RoomInitActionsItem, RoomUserType, RtcInfoType, SDKRoomInfoType, StorageType } from './common/Classes';
import SocketSDK from './socket';
import { checkAction, createRoomAction, getActionKey } from './socket/utils';
import { GetRoomAbnormalActionsQuery, GetRoomActionsQuery, GetRoomChatActionsQuery, UserRoleInfo } from './types';
export declare enum EE_EVENTS {
'sdk-ready' = "sdk-ready",
'sdk-error' = "sdk-error",
'__TIME_ANIME_LOOP__' = "__TIME_ANIME_LOOP__"
}
export declare class SDK extends EventEmitter {
userInfoCache: Map<number, RoomUserType>;
initComplete: boolean;
/**
* 时间差 毫秒
*/
dateDiff: number;
/**
* 时间
*/
timer: {
id: number;
};
conf: Config;
roomData: SDKRoomInfoType;
socket: SocketSDK;
isSubRole: boolean;
roleMain: number | undefined;
roleSub: number | undefined;
/**
* 用户角色
*/
role: number | undefined;
/**
* 用户id
*/
id: number | undefined;
/**
* 用户id
*/
roomid: string | undefined;
constructor();
destroy(): void;
/**
* 默认配置
* 同时检测本地时间是否正常
* @param config
* @returns
*/
config(config: Config): Promise<true>;
/**
* 检测是否config配置
*/
checkIsConfig(): void;
timeAnimeLoop: () => {
id: number;
};
clearTimeAnimeLoop: () => void;
/**
* 获取用户信息
* @param id
* @returns
*/
getUserInfo: (id: number) => RoomUserType | undefined;
/**
* 获取服务器时间
* @returns
*/
getServerTime: () => Promise<number>;
/**
* 获取当前时间
* @returns 返回毫秒数字
*/
getTime(): number;
/**
* 设置服务端时间
* @param serverTime 服务器时间
* @returns
*/
setTime(serverTime: number): number;
/**
* 获取当前房间最新初始状态动作
* @param userCustomRoomid 包含自定义房间
* @param refresh 是否忽略缓存,拉取最新生成
* @returns
*/
getRoomInitActions(userCustomRoomid?: string[], refresh?: boolean): Promise<RoomInitActionsItem[]>;
/**
* 获取房间历史操作动作
* @returns
*/
getRoomActions(query: GetRoomActionsQuery): Promise<{
page: number;
pageSize: number;
total: number;
list: RoomActionsItem[];
}>;
/**
* 获取房间聊天历史操作动作
* @returns
*/
getRoomChatActions(query: GetRoomChatActionsQuery): Promise<{
page: number;
pageSize: number;
total: number;
list: RoomActionsItem[];
}>;
/**
* 获取房间异常
*/
getRoomAbnormalActions(query: GetRoomAbnormalActionsQuery): Promise<{
list: RoomActionsItem[];
total: number;
pageSize: number;
page: number;
}>;
/**
* 获取公告
* @param status
* @param userCustomRoomid
* @returns
*/
getRoomNoticeActions(query: GetRoomChatActionsQuery): Promise<{
page: number;
pageSize: number;
total: number;
list: RoomActionsItem[];
}>;
/**
* 获取socket实例
* @returns
*/
getSocket(): Promise<SocketSDK>;
/**
* 获取房间数据
* @returns
*/
getRoomInfo(): Promise<SDKRoomInfoType>;
/**
* 获取子账户token
* @param subAuthId
* @returns
*/
createSubAuthToken(subAuthId: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9): Promise<string>;
/**
* 创建新的webrtc房间
* @param customRoomid 自定房间id
* @param token 用新token获取
* @returns
*/
createWebRTCRoom(customRoomid: string, newToken?: string): Promise<RtcInfoType>;
/**
* 获取房间模板信息
* @param id
* @returns
*/
getTempInfo(id: string): Promise<MicroTempInfo>;
/**
* 生成房间url
* @param roomid 房间id
* @param token 用户token
* @returns
*/
getRoomUrl(token: string): Promise<string>;
/**
* 检测token是否有效
* @param token
* @returns
*/
checkToken(targeToken?: string): Promise<boolean>;
getMicroApps(ids?: string[]): Promise<Array<MicroTempInfo>>;
setMicroApps(app: MicroTempInfo | Array<MicroTempInfo>): MicroTempInfo[];
getLocalMicroApps(): MicroTempInfo[];
setLocalMicroApps(app: MicroTempInfo | Array<MicroTempInfo>): MicroTempInfo[];
/**
* 获取线上存储配置
*/
getStorage(type: StorageType): Promise<{
type: StorageType;
data: COS_INFO | OSS_INFO;
}>;
/**
* 获取代理接口数据 被代理接口必须是post接口
* @param url 接口url
* @param data
* @returns
*/
getProxyApiData(url: string, data?: AxiosRequestConfig['data']): Promise<any>;
/**
* 获取试卷列表
*/
getTestPaperList(): Promise<{
pageSize: number;
total: number;
page: number;
list: RoomActionsItem[];
}>;
/**
* 获取试卷详情
* @param paperid
*/
getTestPaperForID(paperid: string): Promise<RoomActionsItem>;
/**
* 获取所有已下发试卷
* @param uid
* @returns
*/
getGiveTestPape(uid?: number): Promise<RoomActionsItem>;
/**
* 下发试卷
* @param paperid
*/
giveTestPaperForID(paperid: string, uid?: number | number[] | undefined): Promise<RoomActionsItem>;
/**
* 取消下发试卷
* @param paperid
*/
unGiveTestPaperForID(paperid: string, uid?: number | number[] | undefined): Promise<RoomActionsItem>;
/**
* 获取已下发给用户的试卷列表
* @param page
* @param pageSize
* @returns
*/
getUserTestPaperList(page?: number, pageSize?: number): Promise<RoomActionsItem>;
/**
* 获取已下发给用户的试卷详情 for paperid
* @param page
* @param pageSize
* @returns
*/
getUserTestPaperInfo(pageid: string): Promise<RoomActionsItem>;
/**
* 获取自己的试卷答案
* @param paperid
*/
getTestPaperAnswerForID(paperid: string): Promise<boolean>;
/**
* 提交自己的试卷答案
* @param paperid
*/
saveTestPaperAnswerForID(paperid: string, data: any): Promise<{
paperid: string;
data: any;
}>;
/**
* 自动提交自己的试卷答案
* @param paperid
*/
autoSavePaperAnswerForID(paperid: string, data: any): Promise<{
paperid: string;
data: any;
}>;
/**
* 开始录制
* @param data
* @param recordToken // 如用当前角色token 会使当token用户退出
* @returns
*/
startRecord(data: any, recordToken: string): Promise<{
paperid: string;
data: any;
}>;
/**
* 停止录制
* @param data
* @returns
*/
stopRecord(data?: any): Promise<{
paperid: string;
data: any;
}>;
}
export declare const client: SDK;
export declare const utils: {
createRoomAction: typeof createRoomAction;
checkAction: typeof checkAction;
getActionKey: typeof getActionKey;
checkUserRole: (role: number) => UserRoleInfo | undefined;
getRandomUUID(data?: string): string;
};