diff options
author | Javan Makhmali <javan@javan.us> | 2015-06-25 11:36:40 -0400 |
---|---|---|
committer | Javan Makhmali <javan@javan.us> | 2015-06-25 11:36:40 -0400 |
commit | d9d7371c568fe99ef460202ebe7217bfed050e88 (patch) | |
tree | 0fa912f37d97b855d476e7caa484cf40ea1b18a5 /lib/assets/javascripts/cable/subscriber_manager.js.coffee | |
parent | 53d0b22aeeba1a585abe47b4a9417462b812d1a4 (diff) | |
download | rails-d9d7371c568fe99ef460202ebe7217bfed050e88.tar.gz rails-d9d7371c568fe99ef460202ebe7217bfed050e88.tar.bz2 rails-d9d7371c568fe99ef460202ebe7217bfed050e88.zip |
Assume subscribers have an identifier
Diffstat (limited to 'lib/assets/javascripts/cable/subscriber_manager.js.coffee')
-rw-r--r-- | lib/assets/javascripts/cable/subscriber_manager.js.coffee | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/lib/assets/javascripts/cable/subscriber_manager.js.coffee b/lib/assets/javascripts/cable/subscriber_manager.js.coffee index 98223d076c..e2e6c9e228 100644 --- a/lib/assets/javascripts/cable/subscriber_manager.js.coffee +++ b/lib/assets/javascripts/cable/subscriber_manager.js.coffee @@ -2,25 +2,32 @@ class Cable.SubscriberManager constructor: (@cable) -> @subscribers = {} - add: (identifier, subscriber) -> + add: (subscriber) -> + {identifier} = subscriber @subscribers[identifier] = subscriber - if @cable.sendCommand(identifier, "subscribe") - @notify(identifier, "connected") + if @sendCommand("subscribe", identifier) + @notify(subscriber, "connected") reload: -> - for identifier in Object.keys(@subscribers) - if @cable.sendCommand(identifier, "subscribe") - @notify(identifier, "connected") + for identifier, subscriber of @subscribers + if @sendCommand("subscribe", identifier) + @notify(subscriber, "connected") - remove: (identifier) -> - if subscriber = @subscribers[identifier] - @cable.sendCommand(identifier, "unsubscribe") - delete @subscribers[identifier] + remove: (subscriber) -> + {identifier} = subscriber + @sendCommand("unsubscribe", identifier) + delete @subscribers[identifier] notifyAll: (event, args...) -> - for identifier in Object.keys(@subscribers) - @notify(identifier, event, args...) + for identifier, subscriber of @subscribers + @notify(subscriber, event, args...) - notify: (identifier, event, args...) -> - if subscriber = @subscribers[identifier] + notify: (subscriber, event, args...) -> + if typeof subscriber is "string" + subscriber = @subscribers[subscriber] + + if subscriber subscriber[event]?(args...) + + sendCommand: (command, identifier) -> + @cable.send({command, identifier}) |