var $ = require('preconditions').singleton(); var _ = require('lodash'); var inherits = require('inherits'); var events = require('events'); var nodeutil = require('util'); var log = require('npmlog'); log.debug = log.verbose; log.disableColor(); function MessageBroker(opts) { var self = this; opts = opts || {}; if (opts.messageBrokerServer) { var url = opts.messageBrokerServer.url; this.remote = true; this.mq = require('socket.io-client').connect(url); this.mq.on('connect', function() {}); this.mq.on('connect_error', function() { log.warn('Error connecting to message broker server @ ' + url); }); this.mq.on('msg', function(data) { self.emit('msg', data); }); log.info('Using message broker server at ' + url); } }; nodeutil.inherits(MessageBroker, events.EventEmitter); MessageBroker.prototype.send = function(data) { if (this.remote) { this.mq.emit('msg', data); } else { this.emit('msg', data); } }; MessageBroker.prototype.onMessage = function(handler) { this.on('msg', handler); }; module.exports = MessageBroker;