d.on('added', function(obj) { var adv = obj.advertisement; if (adv.type == 'monitor' && (adv.key ? adv.key == advertisement.key : true)) { var statusPublisher = new axon.PubEmitterSocket(); statusPublisher.connect(adv.port, Subscriber.useHostNames ? obj.hostName : obj.address); setInterval(function() { var nodes = []; for (var id in that.discovery.nodes) { var node = that.discovery.nodes[id]; if (node.sock) nodes.push(id); } statusPublisher.emit('status', { id: d.me.id, nodes: nodes }); }, statusInterval); } if (obj.advertisement.key != advertisement.key) return; that.emit('added', obj); if (adv.axon_type != 'pub-emitter') return; obj.sock = new axon.SubEmitterSocket(); obj.sock.connect(adv.port, Subscriber.useHostNames ? obj.hostName : obj.address); obj.sock.sock.set('retry timeout', 0); obj.sock.sock.on('socket close', function() { that.emit('removed', obj); }); advertisement.subscribesTo = advertisement.subscribesTo || ['*']; advertisement.subscribesTo.forEach(function(topic) { var namespace = ''; if (advertisement.namespace) namespace = advertisement.namespace + '::'; topic = 'message::' + namespace + topic; (function(topic) { obj.sock.on(topic, function() { var args = Array.prototype.slice.call(arguments); if (args.length == 1) args.unshift(topic.substr(9)); else args[0] = namespace + args[0]; that.emit.apply(that, args); }); })(topic); }); });
d.on('added', function(obj) { var adv = obj.advertisement; if (adv.type == 'monitor' && (adv.key ? adv.key == advertisement.key : true)) { var statusPublisher = new axon.PubEmitterSocket(); statusPublisher.connect(adv.port, obj.address); setInterval(function() { var nodes = []; for (var id in that.discovery.nodes) { var node = that.discovery.nodes[id]; if (node.sock) nodes.push(id); } statusPublisher.emit('status', { id: d.me.id, nodes: nodes }); }, statusInterval); } if (obj.advertisement.key != advertisement.key) return; that.emit('added', obj); if (adv.axon_type != 'req') return; if (advertisement.namespace != adv.namespace) return; obj.sock = new axon.RepSocket(); obj.sock.connect(adv.port, obj.address); obj.sock.set('retry timeout', 0); obj.sock.on('socket close', function() { that.emit('removed', obj); }); obj.sock.on('message', function(req, cb) { if (!req.type) return; that.emit(req.type, req, cb); }); });