vubsub

1.2.0 • Public • Published

vubsub

Pub/Sub for Node.js and MongoDB

vubsub is a Pub/Sub implementation for Node.js on top of MongoDB tailable cursors. vubsub was inspired by mubsub.

The main differences between vubsub and mubsub are:

  • Active clients are tracked via a dedicated clients collection
  • You can specify a namespace for each client (or group of clients): a namespace is a mapped to a collection (ns_namespace) where all the messages for that namespace are stored
  • When connecting a client to a channel, you can specify the _id of the last received message and restart receiving message from that point.

vubsub uses Q, Kris Kowal's implementation of Promises.

How to Install

npm install vubsub

How to use

To create a new client, simply call the create function passing a db instance and, optionally, a metadata object. If the metadata contains the ns key, it'll be used as the namespace for the client (i.e. the client will be linked to a collection named ns_namespace). The metadata is stored, together with the client id in the clients collection (you can you this to keep track of your clients).

var vubsub = require('vubsub')
  , MongoClient = require('mongodb').MongoClient
 
MongoClient.connect('mongodb://localhost/test', { auto_reconnect: true }, function(err, db) {
  if (err || !db) throw new Error('failed to connect to the db');
  
  vubsub.create(db, { ns: 'myNamespace' }).then(function(client) {
    console.log('Client connected: ' + client.id);
  });
});

To create a channel and listen to events on the channel:

vubsub.create(db, { ns: 'myNamespace' }).then(function(client) {
  return client.channel('myChannel' /*, you can pass here the id of the last received message */);
}).then(function(channel) {
  console.log('Created channel ' + channel.name);
  channel.on('myEvent', function(event) {
    console.log('Received event', event);
  });
});

To send a message to a channel:

channel.send('myEvent', { a: 1, b: 2}).then(function() {
  console.log('Message sent');
});

Package Sidebar

Install

npm i vubsub

Weekly Downloads

3

Version

1.2.0

License

none

Last publish

Collaborators

  • lmalheiro
  • 0xfede