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; 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; /** * 创建房间 * @remarks 创建成功也意味着加入了该房间 * @param createRoomConfig - 房间信息参数 * @param playerConfig - 玩家信息参数 */ createRoom(createRoomConfig: CreateRoomConfig, playerConfig?: PlayerConfig): Promise; /** * 创建队伍 * @remarks 创建成功也意味着加入了该队伍 * @param groupConfig - 队伍信息参数 * @param playerConfig - 玩家信息参数 */ createGroup(groupConfig: CreateGroupConfig, playerConfig?: PlayerConfig): Promise; /** * 加入房间 * @param roomIdentity - 房间身份标识(房间Id或者房间Code) * @param playerConfig - 玩家信息参数 */ joinRoom(roomIdentity: string, playerConfig?: PlayerConfig): Promise; /** * 根据队伍ID加入队伍 * @param groupId - 队伍 ID * @param playerConfig - 玩家信息参数 */ joinGroup(groupId: string, playerConfig?: PlayerConfig): Promise; /** * 离开房间 */ leaveRoom(): Promise; /** * 解散房间 * @remarks 房主才能解散房间 * @privateRemarks 不支持通过 lastRoomId 解散房间 */ dismissRoom(): Promise; /** * 离开队伍 */ leaveGroup(): Promise; /** * 解散队伍 * @remarks 队长才能解散队伍 */ dismissGroup(): Promise; /** * 重置房间起始帧ID,调用场景:在加入房间后,开始游戏前调用 * @param frameId - 帧ID */ resetRoomFrameId(frameId: number): Promise; /** * 获取可匹配房间列表 */ getAvailableRooms(getAvailableRoomsConfig: GetAvailableRoomsConfig): Promise; /** * 房间匹配 * @param matchRoomConfig - 房间匹配参数 * @param playerConfig - 玩家信息参数 */ matchRoom(matchRoomConfig: MatchRoomConfig, playerConfig?: PlayerConfig): Promise; /** * 在线匹配 * @param matchPlayerConfig - 在线匹配参数 * @param playerConfig - 玩家信息参数 */ matchPlayer(matchPlayerConfig: MatchPlayerConfig, playerConfig?: PlayerConfig): Promise; /** * 组队匹配 * @param matchGroupConfig - 组队匹配参数 * @param playerConfig - 玩家信息参数 * @remarks 队长才能主动发起组队匹配,队员通过广播通知被动调起组队匹配 */ matchGroup(matchGroupConfig: MatchGroupConfig, playerConfig?: PlayerConfig): Promise; /** * 匹配开始 * @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; /** * 移除所有事件监听 */ removeAllListeners(): void; /** * 销毁客户端 */ destroy(): Promise; protected onStateChange(state: StateCode): Promise; protected onServerEventChange(serverEvent: ServerEvent): Promise; private checkMatching; /** * ws onmessage client 实现 * @param ev * @protected */ protected onWsMessage(ev: MessageEvent): void; /** * ws断开时触发 * @param ev * @protected */ protected onWsClose(ev: CloseEvent): Promise; /** * 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; 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; customRoomProperties?: string; } /** * 签名函数 * @public */ export declare type CreateSignature = () => Promise; /** * 错误码 * @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 any> { handlers: Array; on(handler: T): this; emit(...args: FunctionParam): 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 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; /** * 离开队伍 */ leave(): Promise; /** * 解散队伍 * @remarks 队长才能解散队伍 */ dismiss(): Promise; /** * 更新队伍信息 * @remarks 队长才能更新队伍信息 * @param config - 更新队伍信息参数 */ updateGroup(config: UpdateGroupConfig): Promise; /** * 移除队伍内玩家 * @param playerId - 被移除出的玩家ID * @remarks 只有队长才有权限移除其他队员,其他队员通过onLeave收到玩家被踢通知 */ removePlayer(playerId: string): Promise; protected onServerEventChange(serverEvent: ServerEvent): Promise; 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; } 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; maxPlayers: number; roomType?: string; customRoomProperties?: string; } /** * 带匹配规则队伍信息,非对称匹配场景必填,存放队伍参数 * @param matchParams - 自定义匹配参数 * @public */ export declare interface MatchTeamInfoParam { matchParams: Record; } 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; } /** * 房间内消息码 * @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; /** * 开始帧同步 */ startFrameSync(): Promise; /** * 结束帧同步 */ stopFrameSync(): Promise; /** * 玩家房间信息查询 */ update(): Promise; /** * 更新房间自定义属性 * @param updateRoomInfo - 需要更新的房间信息 * @remarks 只有房主才能更新房间信息 */ updateRoomProperties(updateRoomInfo: UpdateRoomInfo): void; /** * 离开房间 */ leave(): Promise; /** * 解散房间 * @remarks 房主才能解散房间 */ dismiss(): Promise; /** * 移除房间内玩家 * @param playerId - 被移除出的玩家ID * @remarks 只有房主有权限移除其他玩家 * @remarks 房间在帧同步中,不能移除其他玩家 */ removePlayer(playerId: string): Promise; /** * 发送消息给房间内玩家 * @param sendToClientInfo - 发送房间内消息参数 */ sendToClient(sendToClientInfo: SendToClientInfo): void; /** * 发送消息给实时服务器 * @param msg - 发送给实时服务器消息 */ sendToServer(msg: string): void; private clearRequestFrame; protected onWsClose(ev: CloseEvent): Promise; 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): void; close(code?: number, reason?: string): void; isOpen(): boolean; isConnecting(): boolean; isClosing(): boolean; isClosed(): boolean; removeAllListeners(): void; } declare interface TransportConstructor { new (events: Partial): 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