@broadcaster/core
Version:
Cross window serverless messaging system based on BroadcastChannel API. Allows to send messages and keep track about instances between browsing contexts (tabs, windows, workers, etc..)
66 lines (65 loc) • 1.78 kB
TypeScript
import { BroadcasterError } from "../utils/Errors";
/**
* **Broadcaster Bridge**
*
* Abstract class responsible for remote communication via serialized messages.
* ____
*
* @private
*/
export declare abstract class BroadcasterBridge<Payload, State> {
/**
* Message, state and error subscriptions.
*/
private subscriptions;
/**
* Called when connection to a stream is required
*
* @param channelName
*/
abstract connect(channelName: string): void;
/**
* Disconnects from a stream and removes all subscriptions
*/
destroy(): void;
/**
* Teardown method called, when bridge will be destroyed
*/
protected abstract disconnect(): void;
/**
* Sends a message to all broadcasters.
*
* @param message
*/
abstract postMessage(message: Payload): void;
/**
* Sends new error to a broadcaster via error subscription
*
* @param error BroadcasterError
*/
protected readonly pushErrorMessage: (error: BroadcasterError) => void;
/**
* Sends new message to a broadcaster via message subscription
*
* @param message
*/
protected readonly pushMessage: (message: Payload) => void;
/**
* Sends new state to a broadcaster via state subscription
*
* @param state
*/
protected readonly pushState: (state: State) => void;
/**
* Notifies all broadcasters about state change in this instance.
*
* @param state
*/
abstract setState(state: State): void;
/**
* Subscribes to a message, state and error stream.
*
* @param subscriptions catalogue of all subscriptions
*/
subscribe(subscriptions: BroadcasterBridge<Payload, State>["subscriptions"]): void;
}