UNPKG

@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
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; }