UNPKG

shoehive

Version:

WebSocket-based multiplayer game framework for real-time, event-driven gameplay

43 lines (42 loc) 2.36 kB
/// <reference types="node" /> import { Player } from './core/Player'; import { Table, TableState } from './core/Table'; import { Card, CardSuit, CardRank, Deck, Hand } from './core/card/index'; import { Seat } from './core/Seat'; import { TableFactory } from './core/TableFactory'; import { WebSocketManager } from './core/WebSocketManager'; import { EventBus } from './events/EventBus'; import { MessageRouter } from './events/MessageRouter'; import { GameManager, GameDefinition } from './core/GameManager'; import { Lobby } from './core/Lobby'; import { AuthModule, ServerTransportModule, TransportModule } from './transport'; import { CLIENT_COMMAND_TYPES, CLIENT_MESSAGE_TYPES } from './core/commands/index'; import * as http from 'http'; import { PLAYER_EVENTS, TABLE_EVENTS, LOBBY_EVENTS, EVENTS, PlayerEventType, TableEventType, LobbyEventType, BuiltInEventType, CustomEventMap, EventType, EventPayloadMap } from './events'; export { Player, Table, Seat, TableState, TableFactory, WebSocketManager, EventBus, MessageRouter, GameManager, GameDefinition, Lobby, AuthModule, ServerTransportModule, TransportModule, CLIENT_COMMAND_TYPES, CLIENT_MESSAGE_TYPES, PLAYER_EVENTS, TABLE_EVENTS, LOBBY_EVENTS, EVENTS, PlayerEventType, TableEventType, LobbyEventType, BuiltInEventType, CustomEventMap, EventType, EventPayloadMap, Card, CardSuit, CardRank, Deck, Hand, }; export declare function createGameServer({ server, authModule, serverTransportModule, options, }: { server: http.Server; authModule?: AuthModule; serverTransportModule?: ServerTransportModule; options?: { /** * Optional timeout in milliseconds for player reconnection. * When a player disconnects, their game state is preserved for this duration. * If they reconnect within this time, they continue from where they left off. * If they don't reconnect within this time, they are removed from the game. * Default is 600000 (10 minutes). Set to 0 to disable reconnection. */ reconnectionTimeoutMs?: number; }; }): { eventBus: EventBus; messageRouter: MessageRouter; tableFactory: TableFactory; gameManager: GameManager; lobby: Lobby; wsManager: WebSocketManager; transport: { auth: AuthModule | undefined; server: ServerTransportModule | undefined; }; };