@podium/browser
The @podium/browser module is a client-side library designed to simplify communication between a podlet and the layout, and between podlets.
The module also supports applications running in a hybrid application when used with @podium/bridge.
For an API designed as reactive state, see @podium/store.
Installation
npm install @podium/browser
Usage
In your podlet's client side JavaScript code, import the MessageBus class from the browser package and create a new instance of the class.
import { MessageBus } from "@podium/browser";
const messageBus = new MessageBus();
Publishing messages
To publish a message, call the publish method and pass a channel, a topic and any data you want subscribers to receive.
messageBus.publish("reminders", "newReminder", reminder);
Subscribing to messages
To subscribe to messages on a particular channel and topic, call the subscribe method passing it the channel, topic and a callback function to be executed whenever an event occurs. Whenever the callback is executed it gets passed an Event object which has the properties channel, topic and payload.
messageBus.subscribe("reminders", "newReminder", (event) => {
const reminder = event.payload;
});
API
MessageBus
Cross podlet communication and message passing.
const messageBus = new MessageBus();
.publish(channel, topic, payload)
Publish an event for a channel and topic combination. Returns the event object passed to subscribers.
This method takes the following arguments:
| option | default | type | required | details |
|---|---|---|---|---|
| channel | null | string | true | Name of the channel. Podium reserves system and view for built-in features. |
| topic | null | string | true | Name of the topic. |
| payload | null | any | false | The payload for the event. |
Examples:
messageBus.publish("search", "query", "laptop");
messageBus.publish("auth", "logout");
.subscribe(channel, topic, callback)
Subscribe to events for a channel and topic combination.
This method takes the following arguments:
| option | default | type | required | details |
|---|---|---|---|---|
| channel | null | string | true | Name of the channel. |
| topic | null | string | true | Name of the topic |
| callback | null | Function | true | Callback function to be invoked. Receives an event object |
Example:
messageBus.subscribe("channel", "topic", (event) => {
console.log(event.payload);
});
.unsubscribe(channel, topic, callback)
Unsubscribe to events for a channel and topic combination.
This method takes the following arguments:
| option | default | type | required | details |
|---|---|---|---|---|
| channel | null | string | true | Name of the channel |
| topic | null | string | true | Name of the topic |
| callback | null | Function | true | Callback function to remove. |
Example:
function cb(event) {
console.log(event.payload);
}
messageBus.subscribe("channel", "topic", cb);
messageBus.unsubscribe("channel", "topic", cb);
.peek(channel, topic)
Get the latest event for a channel and topic combination.
This method takes the following arguments:
| option | default | type | required | details |
|---|---|---|---|---|
| channel | null | string | true | Name of the channel |
| topic | null | string | true | Name of the topic |
.log(channel, topic)
Returns an array of the 10 latest events for a channel and topic combination. The array is ordered such that the the latest/newest events is at the front of the array.
This method takes the following arguments:
| option | default | type | required | details |
|---|---|---|---|---|
| channel | null | string | true | Name of the channel |
| topic | null | string | true | Name of the topic |
Example:
const events = messageBus.log("channel", "topic");
events.forEach((event) => {
console.log(event.payload);
});