thundersync
Version:
A Firebase-based alternative to Socket.IO, providing real-time communication and event-driven functionality using Firebase Realtime Database without a server.
33 lines (32 loc) • 1.15 kB
TypeScript
declare class ThunderSync {
private _connected;
private _id;
private _db;
private _root;
private _socketsRef;
private _eventsRef;
private _roomsRef;
private _rooms;
private _socketIdMap;
constructor(databaseURL: string, root?: string);
get id(): string;
get connected(): boolean;
getSockets(callback: (sockets: any[]) => void): void;
getRooms(callback: (rooms: Map<string, Array<Record<string, string>>>) => void): void;
private initializeDb;
private createSocketId;
disconnect(): boolean | undefined;
emit(event: string, data: Record<string, any>): Promise<void>;
join(room: string, data?: Record<string, any>): Promise<void>;
toRoom(room: string): {
emit: (event: string, data: any) => Promise<void>;
};
mapId(id: string): Promise<void>;
toMapId(id: string): {
emit: (event: string, data: any) => Promise<void>;
};
on(event: string, callback: (data: any) => void): import("firebase/database").Unsubscribe;
off(event: string, callback: (data: any) => void): void;
leave(room: string): Promise<void>;
}
export { ThunderSync };