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.
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.
###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.
$ npm test
MIT