Broadcast<P>
Broadcast event class allows for emitting and listening for events
Type Parameters
P
P extends object = Payload<string, any>
Constructors
Constructor
new Broadcast<
P>(config?):Broadcast<P>
Broadcast class constructor.
Parameters
config?
Returns
Broadcast<P>
Methods
addListener()
protectedaddListener(type,listener):void
Check for the existence of a event type and create it if missing.
Parameters
type
P["type"]
The event type.
listener
Listener<P>
Returns
void
deleteEvent()
deleteEvent(
type):void
Delete an event and unregister all callbacks associated with it.
Parameters
type
P["type"]
The event to delete.
Returns
void
destroy()
destroy():
void
Destroy the BroadcastChannel. After calling this, no further messages will be received.
Returns
void
emit()
Call Signature
emit<
T>(type,payload?,options?):void
Emit an event to all listening contexts.
Type Parameters
T
T extends string
The Payload type, inferred from the event.
Parameters
type
T
The event type.
payload?
undefined
The event payload.
options?
Returns
void
Example
bus.emit(
EVENTS.LAYER_CLICK,
{
worldSpace: pickInfo.coordinate,
screenSpace: pickInfo.pixel,
index: pickInfo.index,
object: pickInfo.object,
},
);
Call Signature
emit<
T>(type,payload,options?):void
Emit an event to all listening contexts.
Type Parameters
T
T extends string
The Payload type, inferred from the event.
Parameters
type
T
The event type.
payload
ExtractEvent<P, T> extends object ? Data : undefined
The event payload.
options?
Returns
void
Example
bus.emit(
EVENTS.LAYER_CLICK,
{
worldSpace: pickInfo.coordinate,
screenSpace: pickInfo.pixel,
index: pickInfo.index,
object: pickInfo.object,
},
);
handleListeners()
protectedhandleListeners(data):void
Iterate through listeners for the given topic and invoke callbacks if criteria match.
Parameters
data
P
The event payload containing type, optional payload, and optional targetId.
Returns
void
Remarks
If targetId is provided, delivery is scoped to a specific browser context.
We assume exactly one bus instance per context, so events are delivered only when
target === this.uuid. If omitted, the event is treated as a broadcast within
this context (audience filtering may occur elsewhere).
init()
protectedinit():void
Initialize the BroadcastChannel and set up event listeners.
Returns
void
off()
off<
T>(type,callback):void
Unregister callback for the specified event type.
Type Parameters
T
T extends string
The Payload type, inferred from the event.
Parameters
type
T
The event type.
callback
(data) => void
Returns
void
on()
on<
T>(type,callback): () =>void
Register a callback to be executed when a message of the specified event type is received.
Type Parameters
T
T extends string
The Payload type, inferred from the event.
Parameters
type
T
The event type.
callback
(data) => void
The callback function.
Returns
():
void
Returns
void
Example
bus.on(EVENTS.MAP_CLICK, (e) => {
if (!e.payload.picked) {
setSelected(null);
}
});
once()
once<
T>(type,callback): () =>void
Register a callback to be executed only once for a specified event type.
Type Parameters
T
T extends string
The Payload type, inferred from the event.
Parameters
type
T
The event type.
callback
(data) => void
The callback function.
Returns
():
void
Returns
void
onError()
protectedonError(error):void
Handle errors from the BroadcastChannel.
Parameters
error
MessageEvent<Error>
Error event.
Returns
void
onMessage()
protectedonMessage(event):void
Process incoming messages.
Parameters
event
MessageEvent<P>
Incoming message event.
Returns
void
removeListener()
protectedremoveListener(type,id):void
Removes a listener by id.
Parameters
type
P["type"]
id
UniqueId
Returns
void
setEventEmitOptions()
setEventEmitOptions(
type,options):void
Set emit options for event by type, options will apply to all emits of this event
Keep in mind that options are merged: global, event, local (lowest to highest precendence)
Parameters
type
P["type"]
event type
options
emit options
EmitOptions | null
Returns
void
setEventsEmitOptions()
setEventsEmitOptions(
events):void
Set a series of events emit options
Parameters
events
Map<P["type"], EmitOptions | null>
map of event type & options
Returns
void
setGlobalEmitOptions()
setGlobalEmitOptions(
options):void
Set global emit options, the lowest precedence options, to be merged with event emit options and local options
Parameters
options
emit options
EmitOptions | null
Returns
void
getInstance()
staticgetInstance<T>(config?):Broadcast<T>
Get the singleton instance of Broadcaster.
Type Parameters
T
T extends object = { source: UniqueId; target?: UniqueId; type: string; } | { payload: any; source: UniqueId; target?: UniqueId; type: string; }
Parameters
config?
Optional custom configuration.
Returns
Broadcast<T>
Properties
channel
protectedchannel:BroadcastChannel|null=null
channelName
protectedchannelName:string=DEFAULT_CONFIG.channelName
emitOptions
protectedemitOptions:Map<P["type"],EmitOptions>
id
readonlyid:UniqueId
listeners
protectedlisteners:Partial<Record<P["type"],Listener<P>[]>> ={}