UNPKG

@colyseus/core

Version:

Multiplayer Framework for Node.js.

135 lines (134 loc) 6.15 kB
import { Deferred } from './utils/Utils.js'; import { RegisteredHandler } from './matchmaker/RegisteredHandler.js'; import { Room } from './Room.js'; import { Presence } from './presence/Presence.js'; import { IRoomCache, MatchMakerDriver, SortOptions } from './matchmaker/driver/local/LocalDriver.js'; import controller from './matchmaker/controller.js'; import * as stats from './Stats.js'; import { AuthContext } from './Transport.js'; import { Type } from './utils/types.js'; export { controller, stats, type MatchMakerDriver }; export type ClientOptions = any; export type SelectProcessIdCallback = (roomName: string, clientOptions: ClientOptions) => Promise<string>; export interface SeatReservation { sessionId: string; room: IRoomCache; devMode?: boolean; } export declare let publicAddress: string; export declare let processId: string; export declare let presence: Presence; export declare let driver: MatchMakerDriver; export declare let selectProcessIdToCreateRoom: SelectProcessIdCallback; export declare function setHealthChecksEnabled(value: boolean): void; export declare let onReady: Deferred; export declare enum MatchMakerState { INITIALIZING = 0, READY = 1, SHUTTING_DOWN = 2 } /** * Internal MatchMaker state */ export declare let state: MatchMakerState; /** * @private */ export declare function setup(_presence?: Presence, _driver?: MatchMakerDriver, _publicAddress?: string, _selectProcessIdToCreateRoom?: SelectProcessIdCallback): Promise<void>; /** * - Accept receiving remote room creation requests * - Check for leftover/invalid processId's on startup * @private */ export declare function accept(): Promise<void>; /** * Join or create into a room and return seat reservation */ export declare function joinOrCreate(roomName: string, clientOptions?: ClientOptions, authContext?: AuthContext): Promise<SeatReservation>; /** * Create a room and return seat reservation */ export declare function create(roomName: string, clientOptions?: ClientOptions, authContext?: AuthContext): Promise<SeatReservation>; /** * Join a room and return seat reservation */ export declare function join(roomName: string, clientOptions?: ClientOptions, authContext?: AuthContext): Promise<SeatReservation>; /** * Join a room by id and return seat reservation */ export declare function reconnect(roomId: string, clientOptions?: ClientOptions): Promise<{ room: import("./matchmaker/driver/api.js").RoomCache<any>; sessionId: any; }>; /** * Join a room by id and return client seat reservation. An exception is thrown if a room is not found for roomId. * * @param roomId - The Id of the specific room instance. * @param clientOptions - Options for the client seat reservation (for `onJoin`/`onAuth`) * @param authContext - Optional authentication token * * @returns Promise<SeatReservation> - A promise which contains `sessionId` and `IRoomCache`. */ export declare function joinById(roomId: string, clientOptions?: ClientOptions, authContext?: AuthContext): Promise<SeatReservation>; /** * Perform a query for all cached rooms */ export declare function query(conditions?: Partial<IRoomCache>, sortOptions?: SortOptions): Promise<IRoomCache[]>; /** * Find for a public and unlocked room available. * * @param roomName - The Id of the specific room. * @param filterOptions - Filter options. * @param sortOptions - Sorting options. * * @returns Promise<IRoomCache> - A promise contaning an object which includes room metadata and configurations. */ export declare function findOneRoomAvailable(roomName: string, filterOptions: ClientOptions, additionalSortOptions?: SortOptions): Promise<import("./matchmaker/driver/api.js").RoomCache<any>>; /** * Call a method or return a property on a remote room. * * @param roomId - The Id of the specific room instance. * @param method - Method or attribute to call or retrive. * @param args - Array of arguments for the method * * @returns Promise<any> - Returned value from the called or retrieved method/attribute. */ export declare function remoteRoomCall<R = any>(roomId: string, method: string, args?: any[], rejectionTimeout?: number): Promise<R>; export declare function defineRoomType<T extends Type<Room>>(roomName: string, klass: T, defaultOptions?: Parameters<NonNullable<InstanceType<T>['onCreate']>>[0]): RegisteredHandler; export declare function removeRoomType(roomName: string): void; export declare function hasHandler(roomName: string): boolean; export declare function getHandler(roomName: string): RegisteredHandler; export declare function getRoomClass(roomName: string): Type<Room>; /** * Creates a new room. * * @param roomName - The identifier you defined on `gameServer.define()` * @param clientOptions - Options for `onCreate` * * @returns Promise<IRoomCache> - A promise contaning an object which includes room metadata and configurations. */ export declare function createRoom(roomName: string, clientOptions: ClientOptions): Promise<IRoomCache>; export declare function handleCreateRoom(roomName: string, clientOptions: ClientOptions, restoringRoomId?: string): Promise<IRoomCache>; /** * Get room data by roomId. * This method does not return the actual room instance, use `getLocalRoomById` for that. */ export declare function getRoomById(roomId: string): Promise<import("./matchmaker/driver/api.js").RoomCache<any>>; /** * Get local room instance by roomId. (Can return "undefined" if the room is not available on this process) */ export declare function getLocalRoomById(roomId: string): Room<any, any, any, any>; /** * Disconnects every client on every room in the current process. */ export declare function disconnectAll(closeCode?: number): Promise<any>[]; export declare function gracefullyShutdown(): Promise<any>; /** * Reserve a seat for a client in a room */ export declare function reserveSeatFor(room: IRoomCache, options: ClientOptions, authData?: any): Promise<SeatReservation>; /** * Perform health check on all processes */ export declare function healthCheckAllProcesses(): Promise<void>; export declare function healthCheckProcessId(processId: string): Promise<any>;