lib/js/cometio.js in sinatra-cometio-0.0.7 vs lib/js/cometio.js in sinatra-cometio-0.0.8
- old
+ new
@@ -54,24 +54,33 @@
}
);
};
this.events = new Array();
- this.on = function(type, listener){
+ this.on = function(type, listener, opts){
if(typeof listener !== "function") return;
var event_id = self.events.length > 0 ? 1 + self.events[self.events.length-1].id : 0
- self.events.push({
+ var params = {
id: event_id,
type: type,
listener: listener
- });
+ };
+ for(i in opts){
+ if(!params[i]) params[i] = opts[i];
+ };
+ self.events.push(params);
return event_id;
};
+ this.once = function(type, listener){
+ this.on(type, listener, {once: true});
+ };
+
this.emit = function(type, data){
for(var i = 0; i < self.events.length; i++){
var e = self.events[i];
if(e.type == type) e.listener(data);
+ if(e.once) this.removeListener(e.id);
}
};
this.removeListener = function(id_or_type){
for(var i = self.events.length-1; i >= 0; i--){