/pubsub

Pubbing and Subbing.

Primary LanguageJavaScriptApache License 2.0Apache-2.0

@cameronwp/pubsub

Shamelessly based on https://davidwalsh.name/pubsub-javascript. Adds the concept of history so new subscriptions can optionally receive a topic published before the subscription was created.

Note: Node only.

npm i -S @cameronwp/pubsub

Sample Usage

Subscribe to topics and receive messages when a topic is published.

Base usage

// script.js
const Pubsub = require('@cameronwp/pubsub');

const ps = new Pubsub();

const topic = 'action';
ps.subscribe(topic, info => {
    console.log(`message published: ${info}`);
});
ps.publish(topic, 'new message!'); // will result in: "message published: new message!"

Removing a subscription

// script.js
const Pubsub = require('@cameronwp/pubsub');

const ps = new Pubsub();

const topic = 'action';
const subscription = ps.subscribe(topic, info => {
    console.log(`message published: ${info}`);
});
subscription.remove();
ps.publish(topic, 'new message!'); // nothing happens

Subscribing after a topic has been published

// script.js
const Pubsub = require('@cameronwp/pubsub');

const ps = new Pubsub();

const topic = 'action';
ps.publish(topic, 'new message!');
const subscription = ps.subscribe(topic, info => {
    console.log(`message published: ${info}`);
}, true); // note the 'true' here indicating that the listener should be called against the last publication
// immediately logs "message published: new message!"

API

Classes

Pubsub

Functions

subscribe(topic, callback, [historical])subscription

Subscribe a callback to be called when a topic is published.

publish(topic, info)

Publish a topic.

clear()

Remove all listeners and clear the history.

Typedefs

listener : function

Callback that gets called when a topic is published.

subscription : function

The resulting subscription.

Pubsub

Kind: global class

new Pubsub()

Creates a means for publishing and subscribing to events with callbacks.

subscribe(topic, callback, [historical]) ⇒ subscription

Subscribe a callback to be called when a topic is published.

Kind: global function

Param Type Default Description
topic string
callback listener
[historical] boolean false Whether or not to immediately call the listener on the last published value for this topic (if it exists).

publish(topic, info)

Publish a topic.

Kind: global function

Param Type
topic string
info any

clear()

Remove all listeners and clear the history.

Kind: global function

listener : function

Callback that gets called when a topic is published.

Kind: global typedef

Param Type
info. any

subscription : function

The resulting subscription.

Kind: global typedef Properties

Name Type Description
remove function Removes the listener from the topic.