1340 lines
		
	
	
		
			38 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			1340 lines
		
	
	
		
			38 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | export declare const enum AutoFrame { | |||
|  |     AUTO_FRAME_OFF = 0, | |||
|  |     AUTO_FRAME_ON = 1 | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 可匹配房间列表信息 | |||
|  |  * @param rooms - 单次请求的房间列表 | |||
|  |  * @param count - 所有房间的总数 | |||
|  |  * @param offset - 偏移量,作为下一次查询请求的入参 | |||
|  |  * @param hasNext - 是否有下一页 0:无 1:有 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface AvailableRoomsInfo { | |||
|  |     rooms: RoomInfo[]; | |||
|  |     count: number; | |||
|  |     offset: string | number; | |||
|  |     hasNext: 0 | 1; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * Base 类 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare class Base { | |||
|  |     protected haInit(): void; | |||
|  |     protected get state(): StateCode; | |||
|  |     protected get serverEventCode(): ServerEventCode; | |||
|  |     protected get appId(): string; | |||
|  |     protected get openId(): string; | |||
|  |     protected get serviceToken(): string; | |||
|  |     get playerId(): string; | |||
|  |     get lastRoomId(): string; | |||
|  |     get roomId(): string; | |||
|  |     get groupId(): string; | |||
|  |     protected constructor(); | |||
|  |     protected setState(state: StateCode): void; | |||
|  |     protected setServerEvent(code: ServerEventCode, param?: string): void; | |||
|  |     protected setAppId(id: string): void; | |||
|  |     protected setOpenId(id: string): void; | |||
|  |     protected setServiceToken(token: string): void; | |||
|  |     protected setPlayerId(id: string): void; | |||
|  |     protected setLastRoomId(roomId: string): void; | |||
|  |     protected setRoomId(id: string): void; | |||
|  |     protected setGroupId(id: string): void; | |||
|  |     protected onStateChange(latter: StateCode, former: StateCode): void; | |||
|  |     protected onServerEventChange(latter: ServerEvent, former: ServerEvent): void; | |||
|  |     get connection(): Connection; | |||
|  |     protected addListener(key: number, value: Base): void; | |||
|  |     protected removeListener(key: number): void; | |||
|  |     get isReconnectStatus(): boolean; | |||
|  |     setReconnectStatus(status: boolean): void; | |||
|  |     get reconnectIntervalSeconds(): number; | |||
|  |     private onMessage; | |||
|  |     /** | |||
|  |      * websocket 建链 | |||
|  |      * @param routerAddress | |||
|  |      * @param ticket | |||
|  |      */ | |||
|  |     private wsConnect; | |||
|  |     /** | |||
|  |      * 根据协议通道类型,建立长连接,js目前只支持wss | |||
|  |      * @param protocol 协议通道类型 | |||
|  |      * @param isReconnect 是否是重连 | |||
|  |      * @protected | |||
|  |      */ | |||
|  |     protected connect(protocol?: number, isReconnect?: boolean): Promise<void>; | |||
|  |     protected onWsMessage(ev: MessageEvent): void; | |||
|  |     protected onWsClose(ev: CloseEvent): void; | |||
|  | } | |||
|  | 
 | |||
|  | export declare interface BaseResponse { | |||
|  |     rtnCode: number; | |||
|  |     msg?: string; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 客户端类 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare class Client extends Base { | |||
|  |     private _auth; | |||
|  |     private _room; | |||
|  |     private _group; | |||
|  |     private _pollInterval; | |||
|  |     private _isMatching; | |||
|  |     private _loginTimestamp; | |||
|  |     private _initStatus; | |||
|  |     onMatch: { | |||
|  |         (this: any, cb: (onMatchResponse: OnMatchResponse) => any): EventEmitter<(onMatchResponse: OnMatchResponse) => any>; | |||
|  |         emit(onMatchResponse: OnMatchResponse): void; | |||
|  |         off(cb: (onMatchResponse: OnMatchResponse) => any): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     onInitResult: { | |||
|  |         (this: any, cb: (resultCode: number) => any): EventEmitter<(resultCode: number) => any>; | |||
|  |         emit(resultCode: number): void; | |||
|  |         off(cb: (resultCode: number) => any): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     /** | |||
|  |      * 获取对应房间实例 | |||
|  |      * @readonly | |||
|  |      */ | |||
|  |     get room(): Room | null; | |||
|  |     /** | |||
|  |      * 获取对应队伍实例 | |||
|  |      * @readonly | |||
|  |      */ | |||
|  |     get group(): Group | null; | |||
|  |     /** | |||
|  |      * 获取玩家登录时间戳 | |||
|  |      * @readonly | |||
|  |      */ | |||
|  |     get loginTimestamp(): number; | |||
|  |     /** | |||
|  |      * 创建客户端 | |||
|  |      * @param config - 创建客户端参数 | |||
|  |      */ | |||
|  |     constructor(config: ClientConfig); | |||
|  |     /** | |||
|  |      * 初始化客户端 | |||
|  |      * @remarks 必须先初始化客户端,才能创建/加入/匹配房间 | |||
|  |      */ | |||
|  |     init(): Promise<Client>; | |||
|  |     /** | |||
|  |      * 创建房间 | |||
|  |      * @remarks 创建成功也意味着加入了该房间 | |||
|  |      * @param createRoomConfig - 房间信息参数 | |||
|  |      * @param playerConfig - 玩家信息参数 | |||
|  |      */ | |||
|  |     createRoom(createRoomConfig: CreateRoomConfig, playerConfig?: PlayerConfig): Promise<Room>; | |||
|  |     /** | |||
|  |      * 创建队伍 | |||
|  |      * @remarks 创建成功也意味着加入了该队伍 | |||
|  |      * @param groupConfig - 队伍信息参数 | |||
|  |      * @param playerConfig - 玩家信息参数 | |||
|  |      */ | |||
|  |     createGroup(groupConfig: CreateGroupConfig, playerConfig?: PlayerConfig): Promise<Group>; | |||
|  |     /** | |||
|  |      * 加入房间 | |||
|  |      * @param roomIdentity - 房间身份标识(房间Id或者房间Code) | |||
|  |      * @param playerConfig - 玩家信息参数 | |||
|  |      */ | |||
|  |     joinRoom(roomIdentity: string, playerConfig?: PlayerConfig): Promise<Room>; | |||
|  |     /** | |||
|  |      * 根据队伍ID加入队伍 | |||
|  |      * @param groupId - 队伍 ID | |||
|  |      * @param playerConfig - 玩家信息参数 | |||
|  |      */ | |||
|  |     joinGroup(groupId: string, playerConfig?: PlayerConfig): Promise<Group>; | |||
|  |     /** | |||
|  |      * 离开房间 | |||
|  |      */ | |||
|  |     leaveRoom(): Promise<Client>; | |||
|  |     /** | |||
|  |      * 解散房间 | |||
|  |      * @remarks 房主才能解散房间 | |||
|  |      * @privateRemarks 不支持通过 lastRoomId 解散房间 | |||
|  |      */ | |||
|  |     dismissRoom(): Promise<Client>; | |||
|  |     /** | |||
|  |      * 离开队伍 | |||
|  |      */ | |||
|  |     leaveGroup(): Promise<Client>; | |||
|  |     /** | |||
|  |      * 解散队伍 | |||
|  |      * @remarks 队长才能解散队伍 | |||
|  |      */ | |||
|  |     dismissGroup(): Promise<Client>; | |||
|  |     /** | |||
|  |      * 重置房间起始帧ID,调用场景:在加入房间后,开始游戏前调用 | |||
|  |      * @param frameId - 帧ID | |||
|  |      */ | |||
|  |     resetRoomFrameId(frameId: number): Promise<Client>; | |||
|  |     /** | |||
|  |      * 获取可匹配房间列表 | |||
|  |      */ | |||
|  |     getAvailableRooms(getAvailableRoomsConfig: GetAvailableRoomsConfig): Promise<AvailableRoomsInfo>; | |||
|  |     /** | |||
|  |      * 房间匹配 | |||
|  |      * @param matchRoomConfig - 房间匹配参数 | |||
|  |      * @param playerConfig - 玩家信息参数 | |||
|  |      */ | |||
|  |     matchRoom(matchRoomConfig: MatchRoomConfig, playerConfig?: PlayerConfig): Promise<Room>; | |||
|  |     /** | |||
|  |      * 在线匹配 | |||
|  |      * @param matchPlayerConfig - 在线匹配参数 | |||
|  |      * @param playerConfig - 玩家信息参数 | |||
|  |      */ | |||
|  |     matchPlayer(matchPlayerConfig: MatchPlayerConfig, playerConfig?: PlayerConfig): Promise<MatchResponse>; | |||
|  |     /** | |||
|  |      * 组队匹配 | |||
|  |      * @param matchGroupConfig - 组队匹配参数 | |||
|  |      * @param playerConfig - 玩家信息参数 | |||
|  |      * @remarks 队长才能主动发起组队匹配,队员通过广播通知被动调起组队匹配 | |||
|  |      */ | |||
|  |     matchGroup(matchGroupConfig: MatchGroupConfig, playerConfig?: PlayerConfig): Promise<MatchResponse>; | |||
|  |     /** | |||
|  |      * 匹配开始 | |||
|  |      * @param fn - 匹配执行方法 | |||
|  |      * @param matchType - 匹配类型 | |||
|  |      * @param playerConfig - 玩家信息参数 | |||
|  |      * @remarks 在线/组队匹配开始接口的逻辑处理 | |||
|  |      */ | |||
|  |     private matchStart; | |||
|  |     /** | |||
|  |      * 匹配查询 | |||
|  |      * @param playerConfig - 玩家信息参数 | |||
|  |      * @remarks 调用匹配接口后,自动触发匹配查询轮询,获得结果后触发onMatch监听 | |||
|  |      */ | |||
|  |     matchQuery(playerConfig?: PlayerConfig): void; | |||
|  |     /** | |||
|  |      * 匹配结果处理 | |||
|  |      * @param matchResponse - 匹配结果 | |||
|  |      * @param playerConfig - 玩家信息参数 | |||
|  |      * @remarks 当匹配接口获取到匹配结果时,对匹配结果进行处理 | |||
|  |      */ | |||
|  |     private matchResponseHandler; | |||
|  |     /** | |||
|  |      * 取消匹配 | |||
|  |      * @remarks 组队匹配模式中,当前只有队长可以取消匹配 | |||
|  |      */ | |||
|  |     cancelMatch(): Promise<BaseResponse>; | |||
|  |     /** | |||
|  |      * 移除所有事件监听 | |||
|  |      */ | |||
|  |     removeAllListeners(): void; | |||
|  |     /** | |||
|  |      * 销毁客户端 | |||
|  |      */ | |||
|  |     destroy(): Promise<void>; | |||
|  |     protected onStateChange(state: StateCode): Promise<void>; | |||
|  |     protected onServerEventChange(serverEvent: ServerEvent): Promise<void>; | |||
|  |     private checkMatching; | |||
|  |     /** | |||
|  |      * ws onmessage client 实现 | |||
|  |      * @param ev | |||
|  |      * @protected | |||
|  |      */ | |||
|  |     protected onWsMessage(ev: MessageEvent): void; | |||
|  |     /** | |||
|  |      * ws断开时触发 | |||
|  |      * @param ev | |||
|  |      * @protected | |||
|  |      */ | |||
|  |     protected onWsClose(ev: CloseEvent): Promise<void>; | |||
|  |     /** | |||
|  |      * ws自动重连 | |||
|  |      * @private | |||
|  |      */ | |||
|  |     private autoReconnect; | |||
|  |     /** | |||
|  |      * 移除Client监听的所有ws消息 | |||
|  |      * @private | |||
|  |      */ | |||
|  |     private removeAllListener; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * Client类构造方法参数 | |||
|  |  * @param clientId - 客户端ID | |||
|  |  * @param openId - 玩家ID | |||
|  |  * @param appId - 应用ID | |||
|  |  * @param platform - 游戏平台 | |||
|  |  * @param cerPath - platform为CC_ANDROID时,需要填该字段,值为cer证书路径 | |||
|  |  * @param clientSecret - 客户端密钥 | |||
|  |  * @param createSignature - 签名函数 | |||
|  |  * @param accessToken - 开发者accessToken | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface ClientConfig { | |||
|  |     clientId: string; | |||
|  |     openId: string; | |||
|  |     appId: string; | |||
|  |     platform?: PlatformType; | |||
|  |     cerPath?: string; | |||
|  |     clientSecret?: string; | |||
|  |     createSignature?: CreateSignature; | |||
|  |     accessToken?: string; | |||
|  | } | |||
|  | 
 | |||
|  | declare class Connection { | |||
|  |     static heartbeatCycle: number; | |||
|  |     transport: Transport; | |||
|  |     events: Partial<TransportEventMap>; | |||
|  |     private heartbeatTimer; | |||
|  |     constructor(Transport?: TransportConstructor); | |||
|  |     connect(endpoint: string): void; | |||
|  |     send(data: ArrayBuffer): void; | |||
|  |     close(code?: number, reason?: string): void; | |||
|  |     isOpen(): boolean; | |||
|  |     isConnecting(): boolean; | |||
|  |     isClosing(): boolean; | |||
|  |     isClosed(): boolean; | |||
|  |     removeAllListeners(): void; | |||
|  |     startHeartbeat(): void; | |||
|  |     stopHeartbeat(): void; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 创建队伍方法参数 | |||
|  |  * @param maxPlayers - 队伍最大支持人数 | |||
|  |  * @param groupName - 队伍名称 | |||
|  |  * @param customGroupProperties - 队伍自定义属性 | |||
|  |  * @param isLock - 是否禁止加入 0:不禁止 1:禁止 默认0 | |||
|  |  * @param isPersistent - 是否持久化 0:不持久化 1:持久化 默认0 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface CreateGroupConfig { | |||
|  |     maxPlayers: number; | |||
|  |     groupName?: string; | |||
|  |     customGroupProperties?: string; | |||
|  |     isLock?: number; | |||
|  |     isPersistent?: number; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 创建房间方法参数 | |||
|  |  * @param maxPlayers - 房间最大支持人数 | |||
|  |  * @param isPrivate - 是否私有 | |||
|  |  * @param isLock - 是否锁定房间 0:非锁定(允许加入房间),1:锁定(不允许加入房间) | |||
|  |  * @param roomType - 房间类型 | |||
|  |  * @param roomName - 房间名称 | |||
|  |  * @param matchParams - 房间匹配属性 | |||
|  |  * @param customRoomProperties - 房间自定义属性 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface CreateRoomConfig { | |||
|  |     maxPlayers: number; | |||
|  |     isPrivate?: number; | |||
|  |     isLock?: number; | |||
|  |     roomType?: string; | |||
|  |     roomName?: string; | |||
|  |     matchParams?: Record<string, string>; | |||
|  |     customRoomProperties?: string; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 签名函数 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare type CreateSignature = () => Promise<Signature>; | |||
|  | 
 | |||
|  | /** | |||
|  |  * 错误码 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare enum ErrorCode { | |||
|  |     COMMON_OK = 0, | |||
|  |     COMMON_ERR = -1, | |||
|  |     CLIENT_COMMON_ERR = -2, | |||
|  |     AUTHENTICATION_FAILED = 2, | |||
|  |     COMMON_REQUEST_PARAM_ERR = 1001, | |||
|  |     REPEAT_REQUEST = 1002, | |||
|  |     SDK_AUTO_REQUEST_FRAME_FAILED = 10002, | |||
|  |     SDK_FRAME_ID_RANGE_ERR = 10003, | |||
|  |     SDK_NOT_IN_ROOM = 90002, | |||
|  |     SDK_MATCHING = 90008, | |||
|  |     SDK_REQUESTING = 90010, | |||
|  |     SDK_GROUP_MEMBERS_ERR = 90011, | |||
|  |     GET_ACCESS_TOKEN_ERR = 95001, | |||
|  |     ROOM_PLAYER_NOT_IN_ROOM = 101101, | |||
|  |     ROOM_INFO_NOT_EXIST = 101103, | |||
|  |     PLAYER_NOT_IN_CURRENT_ROOM = 101105, | |||
|  |     PLAYER_ALREADY_IN_ANOTHER_ROOM = 101106, | |||
|  |     PLAYERS_EXCEED_ROOM_MAX = 101107, | |||
|  |     ROOM_OWNER_AND_PLAYER_MISMATCH = 101109, | |||
|  |     MAX_PLAYERS_TOO_LARGE_OR_NEGATIVE = 101113, | |||
|  |     ROOM_STARTED_FRAME_SYNC = 101114, | |||
|  |     ROOM_STOPPED_FRAME_SYNC = 101115, | |||
|  |     INVALID_ROOM = 101117, | |||
|  |     INVALID_ROOM_STATUS = 101120, | |||
|  |     REMOVE_SELF = 101121, | |||
|  |     TOO_MANY_MATCHING_PARAMETERS = 101123, | |||
|  |     TARGET_OWNER_NOT_IN_ROOM = 101132, | |||
|  |     ONLINE_USERS_EXCEED_MAX = 101135, | |||
|  |     ROOM_IS_LOCK = 101142, | |||
|  |     PLAYER_NOT_IN_CURRENT_GROUP = 101201, | |||
|  |     GROUP_NOT_EXIST = 101202, | |||
|  |     ROOM_NOT_START_FRAME_SYNC = 102003, | |||
|  |     OWNER_NOT_MATCH_GROUP = 101204, | |||
|  |     GROUP_IS_LOCK = 101205, | |||
|  |     GROUP_IS_FULL = 101206, | |||
|  |     NEW_LEADER_NOT_IN_GROUP = 101208, | |||
|  |     PLAYER_NOT_IN_ROOM = 102005, | |||
|  |     ROOM_NOT_EXIST = 102008, | |||
|  |     REQUEST_FRAME_NUMBER_OVERRUN = 102014, | |||
|  |     INVALID_MESSAGE = 102016, | |||
|  |     NO_VALID_TARGET_PLAYER = 102017, | |||
|  |     INVALID_MESSAGE_LENGTH = 102018, | |||
|  |     LOGIN_BUSY = 103001, | |||
|  |     CLIENT_TRAFFIC_CONTROL = 103003, | |||
|  |     CONNECTIONS_EXCEED_MAX = 103006, | |||
|  |     ROOM_MATCH_FAILED = 104101, | |||
|  |     ROOM_MATCHING = 104102, | |||
|  |     ROOM_MATCH_TIMEOUT = 104103, | |||
|  |     PLAYER_MATCH_FAILED = 104201, | |||
|  |     PLAYER_MATCHING = 104202, | |||
|  |     PLAYER_MATCH_TIMEOUT = 104203, | |||
|  |     PLAYER_MATCH_CANCEL_NO_PERMISSION = 104204, | |||
|  |     PLAYER_MATCH_CANCELED = 104205, | |||
|  |     PLAYER_MATCH_CANCEL_WHEN_SUCCESS = 104206, | |||
|  |     PLAYER_MATCH_ROOM_NULL = 104208, | |||
|  |     PLAYER_MATCH_INVALID_TEAM = 104209, | |||
|  |     PLAYER_NOT_IN_MATCH = 104211, | |||
|  |     INVOKE_WISE_FUNCTION_FAILED = 105004, | |||
|  |     JOIN_OR_CREATE_ROOM_FAILED = 91001 | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 事件触发器 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare class EventEmitter<T extends (...args: any[]) => any> { | |||
|  |     handlers: Array<T>; | |||
|  |     on(handler: T): this; | |||
|  |     emit(...args: FunctionParam<T>): void; | |||
|  |     off(handler: T): void; | |||
|  |     clear(): void; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 附加信息 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface FrameExtInfo { | |||
|  |     seed: number; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 帧数据信息 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface FrameInfo extends FramePlayerInfo { | |||
|  |     data: string[]; | |||
|  |     timestamp: number; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 帧数据玩家信息 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface FramePlayerInfo { | |||
|  |     playerId: string; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 函数参数类型 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare type FunctionParam<T> = T extends (...args: infer P) => any ? P : never; | |||
|  | 
 | |||
|  | /** | |||
|  |  * 获取可匹配房间列表参数 | |||
|  |  * @param roomType - 房间类型 | |||
|  |  * @param offset - 偏移量,使用房间的createTime作为每次请求的标记,第一次请求时为0 | |||
|  |  * @param limit - 单次请求获取的房间数量,不选时服务端默认为20 | |||
|  |  * @param sync - 是否只查询空闲房间 true: 是,false: 否 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface GetAvailableRoomsConfig { | |||
|  |     roomType?: string; | |||
|  |     offset?: number | string; | |||
|  |     limit?: number; | |||
|  |     sync?: boolean; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 自定义错误类 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare class GOBEError extends Error { | |||
|  |     code: number; | |||
|  |     constructor(code: number, message?: string); | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 队伍类 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare class Group extends Base { | |||
|  |     onJoin: { | |||
|  |         (this: any, cb: (serverEvent: ServerEvent) => void): EventEmitter<(serverEvent: ServerEvent) => void>; | |||
|  |         emit(serverEvent: ServerEvent): void; | |||
|  |         off(cb: (serverEvent: ServerEvent) => void): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     onLeave: { | |||
|  |         (this: any, cb: (serverEvent: ServerEvent) => void): EventEmitter<(serverEvent: ServerEvent) => void>; | |||
|  |         emit(serverEvent: ServerEvent): void; | |||
|  |         off(cb: (serverEvent: ServerEvent) => void): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     onDismiss: { | |||
|  |         (this: any, cb: (serverEvent: ServerEvent) => void): EventEmitter<(serverEvent: ServerEvent) => void>; | |||
|  |         emit(serverEvent: ServerEvent): void; | |||
|  |         off(cb: (serverEvent: ServerEvent) => void): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     onUpdate: { | |||
|  |         (this: any, cb: (serverEvent: ServerEvent) => void): EventEmitter<(serverEvent: ServerEvent) => void>; | |||
|  |         emit(serverEvent: ServerEvent): void; | |||
|  |         off(cb: (serverEvent: ServerEvent) => void): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     onMatchStart: { | |||
|  |         (this: any, cb: (serverEvent: ServerEvent) => void): EventEmitter<(serverEvent: ServerEvent) => void>; | |||
|  |         emit(serverEvent: ServerEvent): void; | |||
|  |         off(cb: (serverEvent: ServerEvent) => void): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     private config; | |||
|  |     private _player; | |||
|  |     /** | |||
|  |      * 队伍 ID | |||
|  |      */ | |||
|  |     get id(): string; | |||
|  |     /** | |||
|  |      * 队伍名称 | |||
|  |      */ | |||
|  |     get groupName(): string; | |||
|  |     /** | |||
|  |      * 队伍最大人数 | |||
|  |      */ | |||
|  |     get maxPlayers(): number; | |||
|  |     /** | |||
|  |      * 队长 ID | |||
|  |      */ | |||
|  |     get ownerId(): string; | |||
|  |     /** | |||
|  |      * 队伍自定义属性 | |||
|  |      */ | |||
|  |     get customGroupProperties(): string; | |||
|  |     /** | |||
|  |      * 是否禁止加入 0:不禁止 1:禁止 默认0 | |||
|  |      */ | |||
|  |     get isLock(): number; | |||
|  |     /** | |||
|  |      * 是否持久化 0:不持久化 1:持久化 默认0 | |||
|  |      */ | |||
|  |     get isPersistent(): number; | |||
|  |     /** | |||
|  |      * 队伍玩家列表 | |||
|  |      */ | |||
|  |     get players(): PlayerInfo[]; | |||
|  |     /** | |||
|  |      * 玩家自己 | |||
|  |      */ | |||
|  |     get player(): Player; | |||
|  |     /** | |||
|  |      * 队伍 | |||
|  |      * @param config - 创建客户端参数 | |||
|  |      */ | |||
|  |     constructor(config: GroupInfo); | |||
|  |     /** | |||
|  |      * 队伍信息查询 | |||
|  |      */ | |||
|  |     query(): Promise<Group>; | |||
|  |     /** | |||
|  |      * 离开队伍 | |||
|  |      */ | |||
|  |     leave(): Promise<void>; | |||
|  |     /** | |||
|  |      * 解散队伍 | |||
|  |      * @remarks 队长才能解散队伍 | |||
|  |      */ | |||
|  |     dismiss(): Promise<void>; | |||
|  |     /** | |||
|  |      * 更新队伍信息 | |||
|  |      * @remarks 队长才能更新队伍信息 | |||
|  |      * @param config - 更新队伍信息参数 | |||
|  |      */ | |||
|  |     updateGroup(config: UpdateGroupConfig): Promise<void>; | |||
|  |     /** | |||
|  |      * 移除队伍内玩家 | |||
|  |      * @param playerId - 被移除出的玩家ID | |||
|  |      * @remarks 只有队长才有权限移除其他队员,其他队员通过onLeave收到玩家被踢通知 | |||
|  |      */ | |||
|  |     removePlayer(playerId: string): Promise<void>; | |||
|  |     protected onServerEventChange(serverEvent: ServerEvent): Promise<void>; | |||
|  |     removeAllListeners(): void; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 队伍信息 | |||
|  |  * @param groupId - 队伍id | |||
|  |  * @param groupName - 队伍名称 | |||
|  |  * @param maxPlayers - 最大玩家数 | |||
|  |  * @param ownerId - 队长ID | |||
|  |  * @param customGroupProperties - 队伍自定义属性 | |||
|  |  * @param isLock - 是否禁止加入 0:不禁止 1:禁止 默认0 | |||
|  |  * @param isPersistent - 是否持久化 0:不持久化 1:持久化 默认0 | |||
|  |  * @param players - 队伍内玩家列表 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface GroupInfo { | |||
|  |     groupId: string; | |||
|  |     groupName: string; | |||
|  |     maxPlayers: number; | |||
|  |     ownerId: string; | |||
|  |     customGroupProperties: string; | |||
|  |     isLock: number; | |||
|  |     isPersistent: number; | |||
|  |     players: PlayerInfo[]; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 组队匹配参数 | |||
|  |  * @param playerInfos - 带匹配规则的玩家信息列表 | |||
|  |  * @param teamInfo - 带匹配规则队伍信息,非对称匹配场景必填,存放队伍参数 | |||
|  |  * @param matchCode - 匹配规则编号 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface MatchGroupConfig { | |||
|  |     playerInfos: MatchPlayerInfoParam[]; | |||
|  |     teamInfo?: MatchTeamInfoParam; | |||
|  |     matchCode: string; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 在线匹配参数 | |||
|  |  * @param playerInfo - 带匹配规则的玩家信息 | |||
|  |  * @param teamInfo - 带匹配规则队伍信息,非对称匹配场景必填,存放队伍参数 | |||
|  |  * @param matchCode - 匹配规则编号 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface MatchPlayerConfig { | |||
|  |     playerInfo: MatchPlayerInfoParam; | |||
|  |     teamInfo?: MatchTeamInfoParam; | |||
|  |     matchCode: string; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 带匹配规则的玩家信息 | |||
|  |  * @param matchParams - 自定义匹配参数 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface MatchPlayerInfoParam { | |||
|  |     playerId: string; | |||
|  |     matchParams: Record<string, number>; | |||
|  | } | |||
|  | 
 | |||
|  | export declare interface MatchResponse extends BaseResponse { | |||
|  |     roomId?: string; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 房间匹配参数 | |||
|  |  * @param matchParams - 自定义匹配参数,最多支持5条匹配规则 | |||
|  |  * @param maxPlayers - 房间最大支持人数 | |||
|  |  * @param roomType - 房间类型 | |||
|  |  * @param customRoomProperties - 自定义房间属性 | |||
|  |  * @remarks maxPlayers,roomType,customRoomProperties用于找不到匹配房间时创建房间 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface MatchRoomConfig { | |||
|  |     matchParams: Record<string, string>; | |||
|  |     maxPlayers: number; | |||
|  |     roomType?: string; | |||
|  |     customRoomProperties?: string; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 带匹配规则队伍信息,非对称匹配场景必填,存放队伍参数 | |||
|  |  * @param matchParams - 自定义匹配参数 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface MatchTeamInfoParam { | |||
|  |     matchParams: Record<string, number>; | |||
|  | } | |||
|  | 
 | |||
|  | export declare interface OnMatchResponse extends BaseResponse { | |||
|  |     room?: Room; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 支持平台 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare enum PlatformType { | |||
|  |     WEB = 0, | |||
|  |     CC_ANDROID = 1, | |||
|  |     OTHER = 7 | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 玩家类 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare class Player extends Base { | |||
|  |     customStatus?: number; | |||
|  |     customProperties?: string; | |||
|  |     onCustomStatusChangeSuccess: { | |||
|  |         (this: any, cb: () => any): EventEmitter<() => any>; | |||
|  |         emit(): void; | |||
|  |         off(cb: () => any): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     onCustomStatusChangeFailed: { | |||
|  |         (this: any, cb: (error: GOBEError) => any): EventEmitter<(error: GOBEError) => any>; | |||
|  |         emit(error: GOBEError): void; | |||
|  |         off(cb: (error: GOBEError) => any): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     onCustomPropertiesChangeSuccess: { | |||
|  |         (this: any, cb: () => any): EventEmitter<() => any>; | |||
|  |         emit(): void; | |||
|  |         off(cb: () => any): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     onCustomPropertiesChangeFailed: { | |||
|  |         (this: any, cb: (error: GOBEError) => any): EventEmitter<(error: GOBEError) => any>; | |||
|  |         emit(error: GOBEError): void; | |||
|  |         off(cb: (error: GOBEError) => any): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     constructor(customStatus?: number, customProperties?: string); | |||
|  |     /** | |||
|  |      * 更新玩家自定义状态 | |||
|  |      */ | |||
|  |     updateCustomStatus(status: number): void; | |||
|  |     /** | |||
|  |      * 更新玩家自定义属性 | |||
|  |      */ | |||
|  |     updateCustomProperties(customProperties: string): void; | |||
|  |     protected onWsMessage(ev: MessageEvent): void; | |||
|  |     protected onWsClose(ev: CloseEvent): void; | |||
|  |     protected removeAllListener(): void; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 玩家自定义参数 | |||
|  |  * @param customPlayerStatus - 玩家自定义状态 | |||
|  |  * @param customPlayerProperties - 玩家自定义属性 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface PlayerConfig { | |||
|  |     customPlayerStatus?: number; | |||
|  |     customPlayerProperties?: string; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 玩家信息 | |||
|  |  * @param playerId - 玩家ID | |||
|  |  * @param status - 玩家状态 0:空闲;1:房间中;3:离线 | |||
|  |  * @param customPlayerStatus - 自定义玩家状态 | |||
|  |  * @param customPlayerProperties - 自定义玩家属性 | |||
|  |  * @param teamId - 玩家teamId | |||
|  |  * @param isRobot - 是否为机器人,0:不是,1:是 | |||
|  |  * @param robotName - 机器人名字 | |||
|  |  * @param matchParams - 自定义匹配参数 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface PlayerInfo { | |||
|  |     playerId: string; | |||
|  |     status?: number; | |||
|  |     customPlayerStatus?: number; | |||
|  |     customPlayerProperties?: string; | |||
|  |     teamId?: string; | |||
|  |     isRobot?: number; | |||
|  |     robotName?: string; | |||
|  |     matchParams?: Record<string, string>; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 房间内消息码 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare const enum Protocol { | |||
|  |     LOGIN = 0, | |||
|  |     LOGIN_ACK = 1, | |||
|  |     HEARTBEAT = 2, | |||
|  |     HEARTBEAT_ACK = 3, | |||
|  |     CLIENT_SEND_FRAMEDATA = 4, | |||
|  |     CLIENT_SEND_FRAMEDATA_ACK = 5, | |||
|  |     QUERY_FRAMEDATA = 6, | |||
|  |     QUERY_FRAMEDATA_ACK = 7, | |||
|  |     FRAMESYNC_STARTED = 8, | |||
|  |     FRAMESYNC_STOPED = 9, | |||
|  |     BROADCAST_FRAMEDATA = 10, | |||
|  |     QUERY_FRAMEDATA_RESULT = 17, | |||
|  |     JOIN_ROOM = 12, | |||
|  |     LEAVE_ROOM = 13, | |||
|  |     CONNECTED = 14, | |||
|  |     DISCONNECTED = 15, | |||
|  |     ROOM_DISMISS = 16, | |||
|  |     UPDATE_CUSTOM_STATUS = 18, | |||
|  |     UPDATE_CUSTOM_PROPS = 19, | |||
|  |     UPDATE_ROOM_PROPS = 20, | |||
|  |     INSTANT_MESSAGE = 22, | |||
|  |     INSTANT_MESSAGE_ACK = 23, | |||
|  |     RT_TO_SERVER_MSG = 24, | |||
|  |     RT_TO_SERVER_MSG_ACK = 25, | |||
|  |     RT_TO_CLIENT_MSG = 26, | |||
|  |     RT_TO_CLIENT_MSG_ACK = 27, | |||
|  |     UPDATE_PLAYER_STATUS = 28, | |||
|  |     UPDATE_PLAYER_STATUS_ACK = 29, | |||
|  |     UPDATE_PLAYER_PROP = 30, | |||
|  |     UPDATE_PLAYER_PROP_ACK = 31, | |||
|  |     UPDATE_ROOM_PROP = 32, | |||
|  |     UPDATE_ROOM_PROP_ACK = 33, | |||
|  |     RTM_CHANNEL_SETUP = 34, | |||
|  |     RTM_CHANNEL_DESTROY = 35, | |||
|  |     JOIN_ROOM_REQ = 36, | |||
|  |     JOIN_ROOM_ACK = 37, | |||
|  |     WS_CLOSE = 1000 | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 基于「线性同余」的伪随机数生成器 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare class RandomUtils { | |||
|  |     private mask; | |||
|  |     private m; | |||
|  |     private a; | |||
|  |     private seed; | |||
|  |     constructor(seed: number); | |||
|  |     getNumber(): number; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 帧广播消息 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface RecvFrameMessage extends ServerFrameMessage { | |||
|  |     isReplay: boolean; | |||
|  |     time: number; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 房间消息广播回调参数 | |||
|  |  * @param roomId - 房间ID | |||
|  |  * @param sendPlayerId - 发送者playerId | |||
|  |  * @param msg - 消息内容 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface RecvFromClientInfo { | |||
|  |     roomId: string; | |||
|  |     sendPlayerId: string; | |||
|  |     msg: string; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 实时消息广播回调参数 | |||
|  |  * @param roomId - 房间ID | |||
|  |  * @param msg - 消息内容 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface RecvFromServerInfo { | |||
|  |     roomId: string; | |||
|  |     msg: string; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 房间类 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare class Room extends Base { | |||
|  |     static autoFrame: AutoFrame; | |||
|  |     onConnect: { | |||
|  |         (this: any, cb: (player: FramePlayerInfo) => any): EventEmitter<(player: FramePlayerInfo) => any>; | |||
|  |         emit(player: FramePlayerInfo): void; | |||
|  |         off(cb: (player: FramePlayerInfo) => any): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     onJoin: { | |||
|  |         (this: any, cb: (player: FramePlayerInfo) => any): EventEmitter<(player: FramePlayerInfo) => any>; | |||
|  |         emit(player: FramePlayerInfo): void; | |||
|  |         off(cb: (player: FramePlayerInfo) => any): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     onJoinFailed: { | |||
|  |         (this: any, cb: (error: GOBEError) => any): EventEmitter<(error: GOBEError) => any>; | |||
|  |         emit(error: GOBEError): void; | |||
|  |         off(cb: (error: GOBEError) => any): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     onLeave: { | |||
|  |         (this: any, cb: (player: FramePlayerInfo) => any): EventEmitter<(player: FramePlayerInfo) => any>; | |||
|  |         emit(player: FramePlayerInfo): void; | |||
|  |         off(cb: (player: FramePlayerInfo) => any): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     onDismiss: { | |||
|  |         (this: any, cb: () => any): EventEmitter<() => any>; | |||
|  |         emit(): void; | |||
|  |         off(cb: () => any): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     onDisconnect: { | |||
|  |         (this: any, cb: (player: FramePlayerInfo, event?: CloseEvent) => any): EventEmitter<(player: FramePlayerInfo, event?: CloseEvent) => any>; | |||
|  |         emit(player: FramePlayerInfo, event?: CloseEvent | undefined): void; | |||
|  |         off(cb: (player: FramePlayerInfo, event?: CloseEvent) => any): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     onStartFrameSync: { | |||
|  |         (this: any, cb: () => any): EventEmitter<() => any>; | |||
|  |         emit(): void; | |||
|  |         off(cb: () => any): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     onStopFrameSync: { | |||
|  |         (this: any, cb: () => any): EventEmitter<() => any>; | |||
|  |         emit(): void; | |||
|  |         off(cb: () => any): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     onRecvFrame: { | |||
|  |         (this: any, cb: (msg: RecvFrameMessage | RecvFrameMessage[]) => any): EventEmitter<(msg: RecvFrameMessage | RecvFrameMessage[]) => any>; | |||
|  |         emit(msg: RecvFrameMessage | RecvFrameMessage[]): void; | |||
|  |         off(cb: (msg: RecvFrameMessage | RecvFrameMessage[]) => any): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     onRequestFrameError: { | |||
|  |         (this: any, cb: (error: GOBEError) => any): EventEmitter<(error: GOBEError) => any>; | |||
|  |         emit(error: GOBEError): void; | |||
|  |         off(cb: (error: GOBEError) => any): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     onUpdateCustomStatus: { | |||
|  |         (this: any, cb: (player: UpdateCustomStatusResponse) => any): EventEmitter<(player: UpdateCustomStatusResponse) => any>; | |||
|  |         emit(player: UpdateCustomStatusResponse): void; | |||
|  |         off(cb: (player: UpdateCustomStatusResponse) => any): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     onUpdateCustomProperties: { | |||
|  |         (this: any, cb: (player: UpdateCustomPropertiesResponse) => any): EventEmitter<(player: UpdateCustomPropertiesResponse) => any>; | |||
|  |         emit(player: UpdateCustomPropertiesResponse): void; | |||
|  |         off(cb: (player: UpdateCustomPropertiesResponse) => any): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     onRoomPropertiesChange: { | |||
|  |         (this: any, cb: (roomInfo: RoomInfo) => any): EventEmitter<(roomInfo: RoomInfo) => any>; | |||
|  |         emit(roomInfo: RoomInfo): void; | |||
|  |         off(cb: (roomInfo: RoomInfo) => any): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     onRecvFromClient: { | |||
|  |         (this: any, cb: (recvFromClientInfo: RecvFromClientInfo) => any): EventEmitter<(recvFromClientInfo: RecvFromClientInfo) => any>; | |||
|  |         emit(recvFromClientInfo: RecvFromClientInfo): void; | |||
|  |         off(cb: (recvFromClientInfo: RecvFromClientInfo) => any): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     onRecvFromServer: { | |||
|  |         (this: any, cb: (recvFromServerInfo: RecvFromServerInfo) => any): EventEmitter<(recvFromServerInfo: RecvFromServerInfo) => any>; | |||
|  |         emit(recvFromServerInfo: RecvFromServerInfo): void; | |||
|  |         off(cb: (recvFromServerInfo: RecvFromServerInfo) => any): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     onSendToClientFailed: { | |||
|  |         (this: any, cb: (error: GOBEError) => any): EventEmitter<(error: GOBEError) => any>; | |||
|  |         emit(error: GOBEError): void; | |||
|  |         off(cb: (error: GOBEError) => any): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     onSendToServerFailed: { | |||
|  |         (this: any, cb: (error: GOBEError) => any): EventEmitter<(error: GOBEError) => any>; | |||
|  |         emit(error: GOBEError): void; | |||
|  |         off(cb: (error: GOBEError) => any): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     onRoomPropertiesChangeFailed: { | |||
|  |         (this: any, cb: (error: GOBEError) => any): EventEmitter<(error: GOBEError) => any>; | |||
|  |         emit(error: GOBEError): void; | |||
|  |         off(cb: (error: GOBEError) => any): void; | |||
|  |         clear(): void; | |||
|  |     }; | |||
|  |     private config; | |||
|  |     private frameId; | |||
|  |     private readonly frameRequestMaxSize; | |||
|  |     private frameRequesting; | |||
|  |     private frameRequestSize; | |||
|  |     private frameRequestTimes; | |||
|  |     private frameRequestList; | |||
|  |     private autoFrameRequesting; | |||
|  |     private autoRequestFrameFailed; | |||
|  |     private isConnected; | |||
|  |     private autoFrameRequestCacheList; | |||
|  |     private initiativeLeaveRoomFlag; | |||
|  |     private readonly _player; | |||
|  |     private _client; | |||
|  |     private delayCollectAnalyzer; | |||
|  |     private currentServerFrameId; | |||
|  |     /** | |||
|  |      * 房间 ID | |||
|  |      */ | |||
|  |     get id(): string; | |||
|  |     /** | |||
|  |      * 房间类型 | |||
|  |      */ | |||
|  |     get roomType(): string; | |||
|  |     /** | |||
|  |      * 房间名称 | |||
|  |      */ | |||
|  |     get roomName(): string; | |||
|  |     /** | |||
|  |      * 房间的短码 | |||
|  |      */ | |||
|  |     get roomCode(): string; | |||
|  |     /** | |||
|  |      * 房间自定义属性 | |||
|  |      */ | |||
|  |     get customRoomProperties(): string; | |||
|  |     /** | |||
|  |      * 房主 ID | |||
|  |      */ | |||
|  |     get ownerId(): string; | |||
|  |     /** | |||
|  |      * 房间最大人数 | |||
|  |      */ | |||
|  |     get maxPlayers(): number; | |||
|  |     /** | |||
|  |      * 房间玩家列表 | |||
|  |      */ | |||
|  |     get players(): PlayerInfo[]; | |||
|  |     /** | |||
|  |      * 路由信息 | |||
|  |      */ | |||
|  |     get router(): RouterInfo; | |||
|  |     /** | |||
|  |      * 0:公开房间,1:私有房间 | |||
|  |      */ | |||
|  |     get isPrivate(): number; | |||
|  |     /** | |||
|  |      * 房间是否锁定 | |||
|  |      */ | |||
|  |     get isLock(): number; | |||
|  |     /** | |||
|  |      * 创建时间 | |||
|  |      */ | |||
|  |     get createTime(): number; | |||
|  |     /** | |||
|  |      * 房间是否处于帧同步 | |||
|  |      */ | |||
|  |     get isSyncing(): boolean; | |||
|  |     /** | |||
|  |      * 玩家自己 | |||
|  |      */ | |||
|  |     get player(): Player; | |||
|  |     /** | |||
|  |      * 房间 | |||
|  |      * @param client - Client实例 | |||
|  |      * @param config - 创建房间参数 | |||
|  |      */ | |||
|  |     constructor(client: Client, config: RoomInfo); | |||
|  |     /** | |||
|  |      * 发送帧数据 | |||
|  |      * @param frameData - 帧数据 | |||
|  |      */ | |||
|  |     sendFrame(frameData: string | string[]): void; | |||
|  |     /** | |||
|  |      * 请求补帧 | |||
|  |      * @param beginFrameId - 起始帧号 | |||
|  |      * @param size - 请求帧号 | |||
|  |      */ | |||
|  |     requestFrame(beginFrameId: number, size: number): void; | |||
|  |     /** | |||
|  |      * 重置房间起始帧ID,调用场景:在加入房间后,开始游戏前调用 | |||
|  |      * @param frameId - 帧Id | |||
|  |      */ | |||
|  |     resetRoomFrameId(frameId: number): void; | |||
|  |     /** | |||
|  |      * 移除所有事件监听 | |||
|  |      */ | |||
|  |     removeAllListeners(): void; | |||
|  |     /** | |||
|  |      * 重连 | |||
|  |      */ | |||
|  |     reconnect(playerConfig?: PlayerConfig): Promise<void>; | |||
|  |     /** | |||
|  |      * 开始帧同步 | |||
|  |      */ | |||
|  |     startFrameSync(): Promise<void>; | |||
|  |     /** | |||
|  |      * 结束帧同步 | |||
|  |      */ | |||
|  |     stopFrameSync(): Promise<void>; | |||
|  |     /** | |||
|  |      * 玩家房间信息查询 | |||
|  |      */ | |||
|  |     update(): Promise<Room>; | |||
|  |     /** | |||
|  |      * 更新房间自定义属性 | |||
|  |      * @param updateRoomInfo - 需要更新的房间信息 | |||
|  |      * @remarks 只有房主才能更新房间信息 | |||
|  |      */ | |||
|  |     updateRoomProperties(updateRoomInfo: UpdateRoomInfo): void; | |||
|  |     /** | |||
|  |      * 离开房间 | |||
|  |      */ | |||
|  |     leave(): Promise<void>; | |||
|  |     /** | |||
|  |      * 解散房间 | |||
|  |      * @remarks 房主才能解散房间 | |||
|  |      */ | |||
|  |     dismiss(): Promise<void>; | |||
|  |     /** | |||
|  |      * 移除房间内玩家 | |||
|  |      * @param playerId - 被移除出的玩家ID | |||
|  |      * @remarks 只有房主有权限移除其他玩家 | |||
|  |      * @remarks 房间在帧同步中,不能移除其他玩家 | |||
|  |      */ | |||
|  |     removePlayer(playerId: string): Promise<void>; | |||
|  |     /** | |||
|  |      * 发送消息给房间内玩家 | |||
|  |      * @param sendToClientInfo - 发送房间内消息参数 | |||
|  |      */ | |||
|  |     sendToClient(sendToClientInfo: SendToClientInfo): void; | |||
|  |     /** | |||
|  |      * 发送消息给实时服务器 | |||
|  |      * @param msg - 发送给实时服务器消息 | |||
|  |      */ | |||
|  |     sendToServer(msg: string): void; | |||
|  |     private clearRequestFrame; | |||
|  |     protected onWsClose(ev: CloseEvent): Promise<void>; | |||
|  |     protected onWsMessage(ev: MessageEvent): void; | |||
|  |     private updateRoomPropertiesHandle; | |||
|  |     private updateRoomPropAckHandle; | |||
|  |     private frameSyncStartHandle; | |||
|  |     private frameSyncStopHandle; | |||
|  |     private preCheckBroadcastFrame; | |||
|  |     private broadcastFrameDataHandle; | |||
|  |     private queryFrameDataHandle; | |||
|  |     private connectedMsgHandle; | |||
|  |     private joinRoomACKHandle; | |||
|  |     private leaveRoomMsgHandle; | |||
|  |     private joinRoomMsgHandle; | |||
|  |     private disconnectMsgHandle; | |||
|  |     private dismissRoomMsgHandle; | |||
|  |     private updatePlayerStatusHandle; | |||
|  |     private updatePlayerPropertiesHandle; | |||
|  |     private instantMessageHandle; | |||
|  |     private instantMsgACKHandle; | |||
|  |     private realtimeMsgACKHandle; | |||
|  |     private queryFrameDataAckHandle; | |||
|  |     private removeAllListener; | |||
|  |     private addAllListener; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 房间信息 | |||
|  |  * @public | |||
|  |  * @param appId - 游戏ID | |||
|  |  * @param roomId - 房间ID | |||
|  |  * @param roomType - 房间类型 | |||
|  |  * @param roomCode - 房间的短码 | |||
|  |  * @param roomName - 房间名称 | |||
|  |  * @param roomStatus - 房间状态 0:空闲,1:帧同步中 | |||
|  |  * @param customRoomProperties - 房间自定义属性 | |||
|  |  * @param ownerId - 房主ID | |||
|  |  * @param maxPlayers - 房间最大支持人数 | |||
|  |  * @param players - 房间内玩家 | |||
|  |  * @param router - 路由信息 | |||
|  |  * @param isPrivate - 是否私有 | |||
|  |  * @param isLock - 是否锁定房间 0:非锁定(允许加入房间),1:锁定(不允许加入房间) | |||
|  |  * @param createTime - 创建时间 | |||
|  |  */ | |||
|  | export declare interface RoomInfo { | |||
|  |     appId: string; | |||
|  |     roomId: string; | |||
|  |     roomType: string; | |||
|  |     roomCode: string; | |||
|  |     roomName: string; | |||
|  |     roomStatus: number; | |||
|  |     customRoomProperties: string; | |||
|  |     ownerId: string; | |||
|  |     maxPlayers: number; | |||
|  |     players: PlayerInfo[]; | |||
|  |     router: RouterInfo; | |||
|  |     isPrivate: number; | |||
|  |     isLock: number; | |||
|  |     createTime: number; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 路由信息 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface RouterInfo { | |||
|  |     routerId: number; | |||
|  |     routerType: number; | |||
|  |     routerAddr: string; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 发送房间内消息参数 | |||
|  |  * @param type - 房间状态 0:发送给房间内全部玩家,1:发送给房间内除本人外的其他所有玩家,2:发送给recvPlayerIdList的玩家 | |||
|  |  * @param msg - 消息内容 | |||
|  |  * @param recvPlayerList - 接收消息的玩家ID列表 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface SendToClientInfo { | |||
|  |     type: number; | |||
|  |     msg: string; | |||
|  |     recvPlayerIdList?: string[]; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 服务端事件 | |||
|  |  * @param eventType - 1:匹配开始;6:加入小队;7:离开小队;8:解散小队;9:更新小队; | |||
|  |  * @param eventParam - 事件相关信息 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface ServerEvent { | |||
|  |     eventType: ServerEventCode; | |||
|  |     eventParam?: string; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 服务端事件码 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare const enum ServerEventCode { | |||
|  |     DEFAULT = 0, | |||
|  |     MATCH_START = 1, | |||
|  |     JOIN_GROUP = 6, | |||
|  |     LEAVE_GROUP = 7, | |||
|  |     DISMISS_GROUP = 8, | |||
|  |     UPDATE_GROUP = 9 | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 服务端推送消息 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface ServerFrameMessage { | |||
|  |     currentRoomFrameId: number; | |||
|  |     frameInfo: FrameInfo[]; | |||
|  |     ext: FrameExtInfo; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 服务端返回帧数据玩家信息 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface ServerFramePlayerInfo extends FramePlayerInfo { | |||
|  |     extraInfo?: string; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 初始化签名 | |||
|  |  * @param sign - 签名 | |||
|  |  * @param nonce - 随机正整数 | |||
|  |  * @param timeStamp - 时间戳(秒) | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface Signature { | |||
|  |     sign: string; | |||
|  |     nonce: string; | |||
|  |     timeStamp: number; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * SDK 状态码 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare const enum StateCode { | |||
|  |     UNINITIALIZED = 0, | |||
|  |     INITIALIZED = 1, | |||
|  |     INROOM = 2, | |||
|  |     SYNCING = 3 | |||
|  | } | |||
|  | 
 | |||
|  | declare interface Transport { | |||
|  |     connect(endpoint: string): void; | |||
|  |     send(data: ArrayBuffer | Array<number>): void; | |||
|  |     close(code?: number, reason?: string): void; | |||
|  |     isOpen(): boolean; | |||
|  |     isConnecting(): boolean; | |||
|  |     isClosing(): boolean; | |||
|  |     isClosed(): boolean; | |||
|  |     removeAllListeners(): void; | |||
|  | } | |||
|  | 
 | |||
|  | declare interface TransportConstructor { | |||
|  |     new (events: Partial<TransportEventMap>): Transport; | |||
|  | } | |||
|  | 
 | |||
|  | declare interface TransportEventMap { | |||
|  |     onopen: ((ev: Event) => any) | null; | |||
|  |     onmessage: ((ev: MessageEvent) => any) | null; | |||
|  |     onclose: ((ev: CloseEvent) => any) | null; | |||
|  |     onerror: ((ev: Event) => any) | null; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 更新玩家属性响应信息 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface UpdateCustomPropertiesResponse { | |||
|  |     playerId: string; | |||
|  |     customProperties: string; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 更新玩家状态响应信息 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface UpdateCustomStatusResponse { | |||
|  |     playerId: string; | |||
|  |     customStatus: number; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 更新队伍信息参数 | |||
|  |  * @param groupName - 队伍名称 | |||
|  |  * @param ownerId - 队长ID | |||
|  |  * @param customGroupProperties - 队伍自定义属性 | |||
|  |  * @param isLock - 是否禁止加入 0:不禁止 1:禁止 默认0 | |||
|  |  * @public | |||
|  |  */ | |||
|  | export declare interface UpdateGroupConfig { | |||
|  |     groupName?: string; | |||
|  |     ownerId?: string; | |||
|  |     customGroupProperties?: string; | |||
|  |     isLock?: number; | |||
|  | } | |||
|  | 
 | |||
|  | /** | |||
|  |  * 可以更新的房间信息属性 | |||
|  |  * @public | |||
|  |  * @param roomName - 房间名称 | |||
|  |  * @param customRoomProperties - 房间自定义属性 | |||
|  |  * @param ownerId - 房主ID | |||
|  |  * @param isPrivate - 是否私有 | |||
|  |  * @param isLock - 是否锁定房间 0:非锁定(允许加入房间),1:锁定(不允许加入房间) | |||
|  |  */ | |||
|  | export declare interface UpdateRoomInfo { | |||
|  |     roomName?: string; | |||
|  |     customRoomProperties?: string; | |||
|  |     ownerId?: string; | |||
|  |     isPrivate?: number; | |||
|  |     isLock?: number; | |||
|  | } | |||
|  | 
 | |||
|  | export { } | |||
|  | export as namespace GOBE |