# Event Hubs

A Hub is an event manager. It allows to register event handler and to trigger events.

There are three hubs on the viewer:

  • The state hub, available on $viewer.state.hub.
  • The local context hub, available on $viewer.localContext.hub.
  • The global context hub, available on $viewer.globalContext.hub.

The interface of a hub is the following:

Property Description
on(eventName: string, callback: function, options?: object): number A method that register an handler on the event name. When the event is emitted on the hub, the callback function is executed with the event payload as first argument. The number returned by the function is the subscription id that can be used to remove the handler.
once(eventName: string, callback: function, options?: object): number This method is the same as the on method, but the callback is executed only once for the given event and then removed from the listerners.
off(subscriptionId: number): void Cancel the corresponding subscription.
emit(eventName: string, payload?: any): void Emit an event with a optional payload.
clear(): void Remove all subscriptions of this hub.

The third parameter options is an optional Object that accepts the property getLastEvent as a boolean (default to false). If true, the callback is trigered with the last event immediately (if it exists). It can be useful for state synchronization.

TIP

Many of the events you may use are State events. Find more reading the State reference.

TIP

Other useful events are from the global and the local context. Find more reading the globalContext and localContext references.