@ciklum/xmess v1.0.4
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](https://docs.npmjs.com/cli/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
## Links
* [@ciklum/xmess-repeater](https://gitlab.ciklum.net/st-js/module-xmess-repeater)