App-SocialCalc-Multiplayer
view release on metacpan or search on metacpan
socialcalc/third-party/hippie/jquery.ev.js view on Meta::CPAN
h = this.handlers[m.type];
if (!h) h = this.handlers['*'];
if ( h) h(m);
}
},
/* Method: stop
*
* Stop the loop
*
*/
stop: function() {
if (this.xhr) {
this.xhr.abort();
this.xhr = null;
}
this.running = false;
},
/*
* Method: loop
*
* Long poll on a URL
*
* Arguments:
*
* url
* handler
*
*/
loop: function(url, handlers) {
var self = this;
if (handlers) {
if (typeof handlers == "object") {
this.handlers = handlers;
} else if (typeof handlers == "function") {
this.run = handlers;
} else {
throw("handlers must be an object or function");
}
}
this.running = true;
this.xhr = $.ajax({
type : 'GET',
dataType : 'json',
url : url,
timeout : self.timeout,
success : function(messages, status) {
// console.log('success', messages);
self.run(messages)
},
complete : function(xhr, status) {
var delay;
if (status == 'success') {
delay = 100;
} else {
// console.log('status: ' + status, '; waiting before long-polling again...');
delay = 5000;
}
// "recursively" loop
window.setTimeout(function(){ if (self.running) self.loop(url); }, delay);
}
});
}
};
})(jQuery);
( run in 1.477 second using v1.01-cache-2.11-cpan-85d3896f969 )