removed leak from signalr

This commit is contained in:
Keivan Beigi 2013-08-21 12:07:28 -07:00
parent 5327068557
commit 66ce8e8b27
3 changed files with 61 additions and 56 deletions

View File

@ -11,7 +11,7 @@ define(
model: RootFolderModel
});
var collection = new RootFolderCollection().BindSignalR();
var collection = new RootFolderCollection().bindSignalR();
return collection;
});

View File

@ -4,62 +4,62 @@ define(
'signalR'
], function () {
_.extend(Backbone.Collection.prototype, {BindSignalR: function (options) {
_.extend(Backbone.Collection.prototype, {
bindSignalR: function (options) {
if (!options) {
options = {};
}
if (!options.url) {
console.assert(this.url, 'url must be provided or collection must have url');
options['url'] = this.url.replace('api', 'signalr');
}
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;
if (!options) {
options = {};
}
};
var connection = $.connection(options.url);
connection.stateChanged(function (change) {
console.debug('{0} [{1}]'.format(options.url, _getStatus(change.newState)));
});
connection.received(function (message) {
console.debug(message);
if (options.onReceived) {
var context = options.context || self;
options.onReceived.call(context, message);
if (!options.url) {
console.assert(this.url, 'url must be provided or collection must have url');
options.url = this.url.replace('api', 'signalr');
}
else {
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;
}
};
this.signalRconnection = $.connection(options.url);
this.signalRconnection.stateChanged(function (change) {
console.debug('{0} [{1}]'.format(options.url, _getStatus(change.newState)));
});
this.signalRconnection.received(function (message) {
console.debug(message);
self.fetch();
});
this.signalRconnection.start({ transport:
[
'longPolling'
] });
return this;
},
unbindSignalR: function () {
if(this.signalRconnection){
this.signalRconnection.stop();
delete this.signalRconnection;
}
});
connection.start({ transport:
[
'longPolling'
] });
return this;
}});
}});
});

View File

@ -56,7 +56,7 @@ define(
var fanArt = this._getFanArt();
if (fanArt) {
$.backstretch(fanArt);
this._backstrech = $.backstretch(fanArt);
}
else {
$('body').removeClass('backdrop');
@ -78,7 +78,12 @@ define(
},
onClose: function () {
$('.backstretch').remove();
if (this._backstrech) {
this._backstrech.destroy();
delete this._backstrech;
}
$('body').removeClass('backdrop');
},
@ -120,8 +125,8 @@ define(
},
element : this.ui.refresh,
leaveIcon : true,
context: this,
onSuccess: this._showSeasons
context : this,
onSuccess : this._showSeasons
});
},
@ -170,15 +175,15 @@ define(
series : self.model
});
self.episodeCollection.BindSignalR({
/* self.episodeCollection.bindSignalR({
onReceived: seasonCollectionView.onEpisodeGrabbed,
context : seasonCollectionView
});
});*/
self.seasons.show(seasonCollectionView);
self.seasonMenu.show(new SeasonMenuCollectionView({
collection: self.seasonCollection,
collection : self.seasonCollection,
episodeCollection: self.episodeCollection
}));
});