synapse-storage
Version:
Набор инструментов для управления состоянием и апи-запросами
45 lines (44 loc) • 1.49 kB
TypeScript
interface BroadcastMessage<T = unknown> {
type: string;
payload?: T;
senderId: string;
targetId?: string;
timestamp: number;
}
type MessageHandler<T> = (message: BroadcastMessage<T>) => void | Promise<void>;
type SyncRequestHandler<T> = () => T | Promise<T>;
export declare class SyncBroadcastChannel<T = unknown> {
private channel;
private readonly tabId;
private messageHandlers;
private syncHandler?;
private syncTimeoutMs;
private closed;
private pendingSyncRequests;
constructor(channelName: string);
private error;
private handleMessage;
private handleError;
private postMessage;
/**
* Подписка на сообщения канала
*/
subscribe(handler: MessageHandler<T>): () => boolean;
/**
* Установка обработчика запросов на синхронизацию
*/
setSyncHandler(handler: SyncRequestHandler<T>): void;
/**
* Отправка сообщения всем подписчикам
*/
broadcast(type: string, payload?: T): void;
/** Закрыт ли канал (dev double-mount / teardown). Потребители могут пропустить initial-sync. */
get isClosed(): boolean;
/** Запрос синхронизации данных с других вкладок. */
requestSync(): Promise<T | null>;
/**
* Закрытие канала
*/
close(): void;
}
export {};