1
0
Fork 0
mirror of https://github.com/lidarr/Lidarr synced 2024-12-28 02:27:13 +00:00
Lidarr/UI/Mixins/backbone.signalr.mixin.js

50 lines
1.2 KiB
JavaScript
Raw Normal View History

2013-05-05 21:24:33 +00:00
"use strict";
define(['app', 'signalR'], function () {
2013-05-05 21:24:33 +00:00
_.extend(Backbone.Collection.prototype, {BindSignalR: function (options) {
if (!options || !options.url) {
console.assert(this.url, 'url must be provided or collection must have url');
options = {
url: this.url.replace('api', 'signalr')
};
2013-05-05 21:24:33 +00:00
}
var self = this;
var _getStatus = function (status) {
switch (status) {
case 0:
return 'connecting';
case 1:
return 'connected';
case 2:
return 'reconnecting';
case 4:
return 'disconnected';
default:
throw 'invalid status ' + status;
}
2013-05-05 21:24:33 +00:00
};
2013-05-05 21:24:33 +00:00
var connection = $.connection(options.url);
2013-05-05 21:24:33 +00:00
connection.stateChanged(function (change) {
console.debug('{0} [{1}]'.format(options.url, _getStatus(change.newState)));
});
2013-05-05 21:24:33 +00:00
connection.received(function (model) {
console.debug(model);
self.fetch();
});
connection.start({ transport: ['longPolling'] });
return this;
}});
});