diff options
author | Javan Makhmali <javan@javan.us> | 2015-06-25 10:21:53 -0400 |
---|---|---|
committer | Javan Makhmali <javan@javan.us> | 2015-06-25 10:21:53 -0400 |
commit | c7f00661bf0cc54a73ccdb9d27fa10b0fd806e43 (patch) | |
tree | 26d7584ca641b1f7e3a5481af445028ef3c8be53 /lib/assets/javascripts/cable/subscriber_manager.js.coffee | |
parent | 0f761c0d51b8ccfd0d33562194cc5ef92199dc18 (diff) | |
download | rails-c7f00661bf0cc54a73ccdb9d27fa10b0fd806e43.tar.gz rails-c7f00661bf0cc54a73ccdb9d27fa10b0fd806e43.tar.bz2 rails-c7f00661bf0cc54a73ccdb9d27fa10b0fd806e43.zip |
Move connection and subscriber code into their own classes
Diffstat (limited to 'lib/assets/javascripts/cable/subscriber_manager.js.coffee')
-rw-r--r-- | lib/assets/javascripts/cable/subscriber_manager.js.coffee | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/assets/javascripts/cable/subscriber_manager.js.coffee b/lib/assets/javascripts/cable/subscriber_manager.js.coffee new file mode 100644 index 0000000000..4f46efe817 --- /dev/null +++ b/lib/assets/javascripts/cable/subscriber_manager.js.coffee @@ -0,0 +1,26 @@ +class Cable.SubscriberManager + constructor: (@cable) -> + @subscribers = {} + + add: (identifier, subscriber) -> + @subscribers[identifier] = subscriber + if @cable.sendCommand(identifier, "subscribe") + @notify(identifier, "onConnect") + + reload: -> + for identifier in Object.keys(@subscribers) + if @cable.sendCommand(identifier, "subscribe") + @notify(identifier, "onConnect") + + remove: (identifier) -> + if subscriber = @subscribers[identifier] + @cable.sendCommand(identifier, "unsubscribe") + delete @subscribers[identifier] + + notifyAll: (event, args...) -> + for identifier in Object.keys(@subscribers) + @notify(identifier, event, args...) + + notify: (identifier, event, args...) -> + if subscriber = @subscribers[identifier] + subscriber[event]?(args...) |