pub-sub-js v1.1.0
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