UNPKG

tinyroom

Version:

A minimalistic room/lobby system for multiplayer applications. Built on TinyPeer with automatic reconnection support.

53 lines 1.86 kB
import type { PeerOptions, Connection } from 'tinypeer'; type Peer = { id: string; metadata?: unknown; }; export type HostRoom = { id: string; peers: Map<string, Peer>; on(event: string, handler: (data: unknown, fromId: string, metadata?: unknown) => void): void; broadcast(event: string, data: unknown, metadata?: unknown): Promise<void>; sendToPeer(event: string, data: unknown, target: string | string[], metadata?: unknown): Promise<void>; ping(peerId: string): Promise<number>; onPeerJoin(handler: (peer: Peer & { isHost: boolean; close: (reason?: string) => void; }) => void): void; onPeerLeave(handler: (peerId: string) => void): void; close(): Promise<void>; }; export type Client = { id: string; send(event: string, data: unknown, metadata?: unknown): Promise<void>; on(event: string, handler: (data: unknown, fromId: string, metadata?: unknown) => void): void; ping(): Promise<number>; onClose(handler: (reason: string) => void): void; onError(handler: (error: Error) => void): void; leave(): void; }; export type RoomOptions = { metadata?: unknown; persistSession?: boolean; } & PeerOptions; export declare function createRoom(roomId: string, options?: RoomOptions): Promise<{ room: HostRoom; client: Client; }>; export declare function joinRoomInternal(roomId: string, options?: RoomOptions & { connectionTimeout?: number; }): Promise<{ client: Client; connection: Connection; }>; export declare function joinRoom(roomId: string, options?: RoomOptions & { connectionTimeout?: number; }): Promise<Client>; export declare function joinOrCreateRoom(roomId: string, options?: RoomOptions & { connectionTimeout?: number; }): Promise<{ room?: HostRoom; client: Client; }>; export {}; //# sourceMappingURL=room.d.ts.map