mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-14 05:23:21 +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