XMESS - basic pub/sub pattern implementation
Table of contents
Installation and usage
Set private registry by adding //registry.npmjs.org/:_authToken=7e1daf59-1424-4261-a14b-ab23f404c1db
to your .npmrc
file
Install XMESS library by running
npm i @ciklum/xmess
Now you can use assets provided by XMESS:
import { Xmess } from '@ciklum/xmess'
Usage and API
Module exports xmess singleton that implements basic pub/sub pattern. Generally it is both publisher and subscriber. Every entity represented as 'channel', that stores last emitted message from corresponding channel and has methods:
-
subscribe
- method to register subscriber to a specific channel. Callback function that invoked after publish event occurred in the current channel is a parameter tosubscribe
method. All data that was published, passed to callback function as an argument. Method returns function that unsubscribe current callback from current channel. -
subscribeWithLatest
- method to register subscriber to a specific channel and immediately fire callback with the last message. Callback function that invoked after publish event occurred in the current channel is a parameter tosubscribeWithLatestt
method. All All data that was published, passed to callback function as an argument. Method returns function that unsubscribe current callback from current channel. -
publish
- method to publish some data to all subscribers in current channel. Data that will be passed to all subscriber's callbacks in current channel, is a parameter topublish
method.
Example:
import { Xmess } from '@ciklum/xmess'
// Provide 'xmessId' If you want to use Xmess in conjunction with @ciklum/xmess-repeater
const xmess = new Xmess('xmessId')
const unsubscribe = xmess.channel('some-channel').subscribe(data => handler(data))
xmess.channel('some-channel').publish({ data: 'some data' }) // handler called
// handler will be called immediately after subscription
const unsubWithLatest = xmess.channel('some-channel').subscribeWithLatest(data => handler(data))
unsubscribe() // to unsubscribe from the channel
unsubWithLatest() // to unsubscribe from the channel
xmess.destroy() // to remove all subscriptions
Working with local copy of module
When you want to develop new features for module, this section will be helpful for you. Package linking is a two-step process which solves this need. You need npm link for this.
Steps:
-
Create global link. It will be available in folder were your npm modules are.
npm link
-
Links to the global installation target from your front end app.
npm link @ciklum/xmess
Publish a package
Publish a package to the registry by running
npm run build
npm publish