Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Distributed publish/subscribe messaging system
JavaScript
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib Improved test, fixed callback name
test Improved test, fixed callback name
.gitignore v1.0.9
.travis.yml
LICENSE v1.0.9
README.md Improved test, fixed callback name
index.js v1.0.1
package.json Improved test, fixed callback name

README.md

pub-sub-js

pub-sub-js is tiny library with zero dependencies that implements distributed publish/subscribe messaging system.

$ npm install pub-sub-js

Why not use zeromq ? Because of this bug.

Usage

Publish messages to channels:

var Pub = require('pub-sub-js').Publisher;

var publisher = new Pub();

publisher.listen(8002);

setInterval(function () {

  publisher.publish('channel_one', 'message_one');
  publisher.publish('channel_two', {message: 'two'});
  publisher.publish('channel_three', ['message', 'three']);

}, 1000);

Subscribe to channels and receive the messages:

var Sub = require('pub-sub-js').Subscriber;

var subscriber = new Sub();

subscriber.subscribe('channel_one');
subscriber.connect(8002, '127.0.0.1');
subscriber.subscribe('channel_two');

subscriber.on('message', function (channel, data) {

  console.log(channel, data);
});

Output:

channel_one message_one
channel_two { message: 'two' }

Message three will not be received because there is no subscription to the channel_three. There will be no network traffic on publisher.send('channel_three', ...) call.

API

Class: Subscriber

.subscribe(channel)

Subscribes to the channel.

.unsubscribe(channel)

Unsubscribes from the channel.

.connect(port, [host])

Opens connection to the Publisher. See net.Socket.connect().

.disconnect(port, [host])

Closes the connection.

.listen(port, [host])

Begin accepting connections on the specified port and hostname. See net.Server.listen().

.close([callback])

Stops from accepting new connections. See net.Server.close().

Event: 'message' (channel, data)

Emitted when the message is received.

Event: 'log' (args)

Can be used for debugging.

Class: Publisher

.publish(channel, message)

Publish message to the channel.

.connect(port, [host])

Opens connection to the Subscriber. See net.Socket.connect().

.disconnect(port, [host])

Closes the connection.

.listen(port, [host])

Begin accepting connections on the specified port and hostname. See net.Server.listen().

.close([callback])

Stops from accepting new connections. See net.Server.close().

Event: 'log' (args)

Can be used for debugging.

Tests

$ npm test

License

MIT

Something went wrong with that request. Please try again.