redis-eventemitter
Version:
Redis pubsub using an event emitter
103 lines (64 loc) • 2.45 kB
Markdown
Use redis as pubsub using a simple eventemitter.
npm install redis-eventemitter
```js
var redis = require('redis-eventemitter');
var pubsub = redis({
prefix: 'production:',
url: 'redis://myuser:mypass@localhost:6379/'
// port: 6379,
// host: '127.0.0.1',
// auth_pass: 'mypassword'
// in case you want to control Redis clients
// creation you can specify pub/sub clients pair:
// pub: pubClient,
// sub: subClient
});
// Listen for messages on the *:newuser channel
pubsub.on('*:newuser', function(channel, user) {
console.log(channel); // prints "myservice:newuser"
console.log(user); // user is a json map as expected
});
// Publish an event "production:myservice:newuser" to the redis pubsub
pubsub.emit('myservice:newuser', { id:'a1b2c3', email:'foo@example.com' });
```
``` js
var redis = require('redis-eventemitter');
var pubsub = redis({ prefix: 'production:', host: 'localhost', port: 6379 });
pubsub.emit('myservice:newuser', { id:'a1b2c3' });
```
``` js
var redis = require('redis-eventemitter');
var pubsub = redis({ scope: 'production:', host: 'localhost', port: 6379 });
pubsub.on('*:newuser', function(channel, message) {
console.log(channel); // myservice:newuser
console.log(message); // { id:'a1b2c3' }
});
```
To be able to handle errors (like when the redis server is down) `.on('error', ...)` should be used.
Note that this means that you can't listen for messages on the `error` channel.
### .removeListener(pattern, listener)
Removes listener.
### .removeAllListeners(pattern)
Removes all listeners.
## Options
### port
Port for the redis server.
### host
Host for the redis server.
### url
Url for the redis server.
### auth_pass
Password for the redis server. Defaults to not being set.
### prefix
A prefix that is added to the channel name, when publishing events to the redis pubsub. Useful for separating services or environments, e.g. `production`, `development`, and `staging`.
It is also removed when the listeners is invoked.
### pub
Redis client instance used for `publish`.
### sub
Redis client instance used for `subscribe`.