mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-13 21:13:26 +00:00
Add subscriber manager
This commit is contained in:
36
www/scripts/common/websockets/subscriberManager.js
Normal file
36
www/scripts/common/websockets/subscriberManager.js
Normal file
@@ -0,0 +1,36 @@
|
||||
define([
|
||||
"underscore",
|
||||
"backbone",
|
||||
"common/websockets/connection"
|
||||
], function (_, Backbone, WSConnection) {
|
||||
var currentTopic = null;
|
||||
var callbackStack = [];
|
||||
|
||||
var callbackHandler = function (topic, msg) {
|
||||
_.each(callbackStack, function(cb) {
|
||||
cb(topic, msg);
|
||||
});
|
||||
};
|
||||
|
||||
var reset = function () {
|
||||
callbackStack = [];
|
||||
currentTopic = null;
|
||||
};
|
||||
|
||||
return {
|
||||
'register': function (topic) {
|
||||
this.unregister();
|
||||
WSConnection.subscribe(topic, callbackHandler);
|
||||
currentTopic = topic;
|
||||
},
|
||||
'unregister': function () {
|
||||
if (currentTopic !== null) {
|
||||
WSConnection.unsubscribe(currentTopic);
|
||||
reset();
|
||||
}
|
||||
},
|
||||
'pushCallback': function (callback) {
|
||||
callbackStack.push(callback);
|
||||
}
|
||||
}
|
||||
});
|
Reference in New Issue
Block a user