server-state-sync
Version:
State synchronization between multiple clients
25 lines (24 loc) • 1 kB
TypeScript
import SocketClient from './SocketClient';
export interface StateConfiguration<T, K> {
initialValue: T;
allowConnectingClient?: (clientInformation: K) => Boolean;
interceptStateUpdate?: (updates: Partial<T>, clientInformation: K) => Partial<T> | null;
selfDestruct?: (numberOfClients: number, timeOfCreation: Date) => Boolean;
ttl?: number;
}
export default class State<T, K> {
private connectedClients;
private value;
private timeOfCreation;
private allowConnectingClient;
private interceptStateUpdate;
private selfDestruct;
private destructionHandler;
constructor(config: StateConfiguration<T, K>, destructionHandler: () => {});
connectClient: (socketClient: SocketClient<T, K>) => void;
disconnectClient: (socketClient: SocketClient<T, K>) => void;
mutate: (updates: Partial<T>, clientInformation: K) => Boolean;
broadcastStateUpdate: (updates: Partial<T>) => void;
getState(): T;
private destroy;
}