https://github.com/syuilo/xev
Node.js Global Event System
https://github.com/syuilo/xev
nodejs typescript
Last synced: 8 months ago
JSON representation
Node.js Global Event System
- Host: GitHub
- URL: https://github.com/syuilo/xev
- Owner: syuilo
- License: mit
- Created: 2017-04-06T23:07:55.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2022-04-17T05:41:24.000Z (about 4 years ago)
- Last Synced: 2024-10-12T19:41:31.069Z (over 1 year ago)
- Topics: nodejs, typescript
- Language: TypeScript
- Size: 28.3 KB
- Stars: 12
- Watchers: 3
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
xev
================================================================
[![][npm-badge]][npm-link]
[![][travis-badge]][travis-link]
[![][mit-badge]][mit]
Global event system for [Node](https://github.com/nodejs/node).
**It works well on the cluster!** (Messaging between master and workers)
Install
----------------------------------------------------------------
``` shell
$ npm install xev --save
```
Usage
----------------------------------------------------------------
It is the same as using [EventEmitter](https://nodejs.org/api/events.html).
**But all events are shared globally.**
### Simple usage
File A:
``` javascript
import Xev from 'xev';
const ev = new Xev();
ev.on('my-event', message => {
console.log(`message received: ${message}`);
});
```
File B:
``` javascript
import Xev from 'xev';
const ev = new Xev();
ev.emit('my-event', 'yo'); // <= 'message received: yo'
```
### On the cluster
If you use the cluster, You must be call `mount` function at the master process. e.g.:
``` javascript
import { isMaster } from 'cluster';
import Xev from 'xev';
const ev = new Xev();
if (isMaster) {
// your master code
ev.mount(); // Init xev
} else {
// your worker code
}
```
Worker A:
``` javascript
import Xev from 'xev';
const ev = new Xev();
ev.on('my-event', message => {
console.log(`message received: ${message}`);
});
```
Worker B:
``` javascript
import Xev from 'xev';
const ev = new Xev();
ev.emit('my-event', 'yo'); // <= 'message received: yo'
```
Technically, Node.js **cannot** workers to communicate directly
with each other - all communication goes via the master.
So, you must be call our `mount` initialize function.
### That is it.
Good luck, have fun.
API
----------------------------------------------------------------
Please see [EventEmitter](https://nodejs.org/api/events.html).
In the following, we will describe the unique API of xev.
### new Xev(namespace?)
If you are a library developer, we recommend setting namespace
to avoid conflicts with events of users or other libraries:
``` javascript
import Xev from 'xev';
const ev = new Xev('my-namespace');
```
### xev.mount()
If you want to share events on the cluster, please call this method once in the master process.
License
----------------------------------------------------------------
[MIT](LICENSE)
[npm-link]: https://www.npmjs.com/package/xev
[npm-badge]: https://img.shields.io/npm/v/xev.svg?style=flat-square
[mit]: http://opensource.org/licenses/MIT
[mit-badge]: https://img.shields.io/badge/license-MIT-444444.svg?style=flat-square
[travis-link]: https://travis-ci.org/syuilo/xev
[travis-badge]: http://img.shields.io/travis/syuilo/xev.svg?style=flat-square