Skip to main content

@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:

optiondefaulttyperequireddetails
channelnullstringtrueName of the channel. Podium reserves system and view for built-in features.
topicnullstringtrueName of the topic.
payloadnullanyfalseThe 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:

optiondefaulttyperequireddetails
channelnullstringtrueName of the channel.
topicnullstringtrueName of the topic
callbacknullFunctiontrueCallback 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:

optiondefaulttyperequireddetails
channelnullstringtrueName of the channel
topicnullstringtrueName of the topic
callbacknullFunctiontrueCallback 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:

optiondefaulttyperequireddetails
channelnullstringtrueName of the channel
topicnullstringtrueName 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:

optiondefaulttyperequireddetails
channelnullstringtrueName of the channel
topicnullstringtrueName of the topic

Example:

const events = messageBus.log("channel", "topic");

events.forEach((event) => {
console.log(event.payload);
});