@bitzonegaming/roleplay-engine-framework
Version:
Roleplay Engine Framework
46 lines (45 loc) • 1.33 kB
TypeScript
import { RPEventEmitter } from '../../core/bus/event-emitter';
import { RPServerEvents } from '../core/events/events';
import { RPLogger } from '../../core/logger';
export interface SocketMessage<Data = unknown> {
event: string;
data: Data & {
timestamp?: number;
};
headers: Record<string, string>;
}
export interface EngineSocketConfig {
url: string;
protocols?: string | string[];
apiKeyId: string;
apiKeySecret: string;
serverId: string;
}
export declare class EngineSocket {
private readonly config;
private readonly eventEmitter;
private readonly logger;
private ws;
private connectedAt;
private readonly maxRetries;
private retryCount;
private readonly baseDelayMs;
private manuallyClosed;
private isConnecting;
private isConnected;
private activeTimers;
private pingInterval?;
constructor(config: EngineSocketConfig, eventEmitter: RPEventEmitter<RPServerEvents>, logger: RPLogger);
start(): Promise<void>;
close(code?: number, reason?: string): void;
private clearAllTimers;
private addTimer;
private tryConnect;
private connectOnce;
private handleMessage;
private send;
private delay;
private appendQuery;
private setupPingInterval;
private setupPostHandshakeReconnection;
}