faye
Version:
Simple pub/sub messaging for the web
38 lines (29 loc) • 1.08 kB
JavaScript
;
var assign = require('../util/assign'),
EventEmitter = require('../util/event_emitter');
var Publisher = {
countListeners: function(eventType) {
return this.listeners(eventType).length;
},
bind: function(eventType, listener, context) {
var slice = Array.prototype.slice,
handler = function() { listener.apply(context, slice.call(arguments)) };
this._listeners = this._listeners || [];
this._listeners.push([eventType, listener, context, handler]);
return this.on(eventType, handler);
},
unbind: function(eventType, listener, context) {
this._listeners = this._listeners || [];
var n = this._listeners.length, tuple;
while (n--) {
tuple = this._listeners[n];
if (tuple[0] !== eventType) continue;
if (listener && (tuple[1] !== listener || tuple[2] !== context)) continue;
this._listeners.splice(n, 1);
this.removeListener(eventType, tuple[3]);
}
}
};
assign(Publisher, EventEmitter.prototype);
Publisher.trigger = Publisher.emit;
module.exports = Publisher;