aboutsummaryrefslogtreecommitdiffstats
path: root/lib/assets
diff options
context:
space:
mode:
authorJavan Makhmali <javan@javan.us>2015-06-25 16:24:58 -0400
committerJavan Makhmali <javan@javan.us>2015-06-25 16:24:58 -0400
commit84ed13970003e9ec2f21c35df111370492519cdc (patch)
treec317a2712c337d10c3211bd336c0b22b4dc06830 /lib/assets
parentfa0281aeb122058fa7d353fcd74e08a6702a9061 (diff)
downloadrails-84ed13970003e9ec2f21c35df111370492519cdc.tar.gz
rails-84ed13970003e9ec2f21c35df111370492519cdc.tar.bz2
rails-84ed13970003e9ec2f21c35df111370492519cdc.zip
Cable.Consumer
Diffstat (limited to 'lib/assets')
-rw-r--r--lib/assets/javascripts/cable.js.coffee21
-rw-r--r--lib/assets/javascripts/cable/connection.js.coffee12
-rw-r--r--lib/assets/javascripts/cable/connection_monitor.js.coffee6
-rw-r--r--lib/assets/javascripts/cable/consumer.js.coffee16
-rw-r--r--lib/assets/javascripts/cable/subscriber_manager.js.coffee4
-rw-r--r--lib/assets/javascripts/cable/subscription.js.coffee8
6 files changed, 36 insertions, 31 deletions
diff --git a/lib/assets/javascripts/cable.js.coffee b/lib/assets/javascripts/cable.js.coffee
index fad5aa05d3..0bd1757505 100644
--- a/lib/assets/javascripts/cable.js.coffee
+++ b/lib/assets/javascripts/cable.js.coffee
@@ -1,19 +1,8 @@
#= require_self
-#= require cable/subscriber_manager
-#= require cable/connection
-#= require cable/subscription
+#= require cable/consumer
-class @Cable
- @PING_IDENTIFIER: "_ping"
+@Cable =
+ PING_IDENTIFIER: "_ping"
- constructor: (@url) ->
- @subscribers = new Cable.SubscriberManager this
- @connection = new Cable.Connection this
-
- createSubscription: (channelName, mixin) ->
- channel = channelName
- params = if typeof channel is "object" then channel else {channel}
- new Cable.Subscription this, params, mixin
-
- send: (data) ->
- @connection.send(data)
+ createConsumer: (url) ->
+ new Cable.Consumer url
diff --git a/lib/assets/javascripts/cable/connection.js.coffee b/lib/assets/javascripts/cable/connection.js.coffee
index 096dd519f7..6ee28fcb75 100644
--- a/lib/assets/javascripts/cable/connection.js.coffee
+++ b/lib/assets/javascripts/cable/connection.js.coffee
@@ -1,8 +1,8 @@
#= require cable/connection_monitor
class Cable.Connection
- constructor: (@cable) ->
- new Cable.ConnectionMonitor @cable
+ constructor: (@consumer) ->
+ new Cable.ConnectionMonitor @consumer
@connect()
send: (data) ->
@@ -17,7 +17,7 @@ class Cable.Connection
@createWebSocket()
createWebSocket: ->
- @websocket = new WebSocket(@cable.url)
+ @websocket = new WebSocket(@consumer.url)
@websocket.onmessage = @onMessage
@websocket.onopen = @onConnect
@websocket.onclose = @onClose
@@ -33,10 +33,10 @@ class Cable.Connection
onMessage: (message) =>
data = JSON.parse message.data
- @cable.subscribers.notify(data.identifier, "received", data.message)
+ @consumer.subscribers.notify(data.identifier, "received", data.message)
onConnect: =>
- @cable.subscribers.reload()
+ @consumer.subscribers.reload()
onClose: =>
@disconnect()
@@ -48,5 +48,5 @@ class Cable.Connection
@websocket?.readyState is 1
disconnect: ->
- @cable.subscribers.notifyAll("disconnected")
+ @consumer.subscribers.notifyAll("disconnected")
@removeWebsocket()
diff --git a/lib/assets/javascripts/cable/connection_monitor.js.coffee b/lib/assets/javascripts/cable/connection_monitor.js.coffee
index 078e1d3b26..cf36b2a457 100644
--- a/lib/assets/javascripts/cable/connection_monitor.js.coffee
+++ b/lib/assets/javascripts/cable/connection_monitor.js.coffee
@@ -4,9 +4,9 @@ class Cable.ConnectionMonitor
identifier: Cable.PING_IDENTIFIER
- constructor: (@cable) ->
+ constructor: (@consumer) ->
@reset()
- @cable.subscribers.add(this)
+ @consumer.subscribers.add(this)
@pollConnection()
connected: ->
@@ -35,7 +35,7 @@ class Cable.ConnectionMonitor
reconnect: ->
console.log "Ping took too long to arrive. Reconnecting.."
@connectionAttempts += 1
- @cable.connection.connect()
+ @consumer.connection.connect()
now = ->
new Date().getTime()
diff --git a/lib/assets/javascripts/cable/consumer.js.coffee b/lib/assets/javascripts/cable/consumer.js.coffee
new file mode 100644
index 0000000000..a9abd6256a
--- /dev/null
+++ b/lib/assets/javascripts/cable/consumer.js.coffee
@@ -0,0 +1,16 @@
+#= require cable/connection
+#= require cable/subscription
+#= require cable/subscriber_manager
+
+class Cable.Consumer
+ constructor: (@url) ->
+ @subscribers = new Cable.SubscriberManager this
+ @connection = new Cable.Connection this
+
+ createSubscription: (channelName, mixin) ->
+ channel = channelName
+ params = if typeof channel is "object" then channel else {channel}
+ new Cable.Subscription this, params, mixin
+
+ send: (data) ->
+ @connection.send(data)
diff --git a/lib/assets/javascripts/cable/subscriber_manager.js.coffee b/lib/assets/javascripts/cable/subscriber_manager.js.coffee
index 9ff727aa0c..0893d217ac 100644
--- a/lib/assets/javascripts/cable/subscriber_manager.js.coffee
+++ b/lib/assets/javascripts/cable/subscriber_manager.js.coffee
@@ -1,5 +1,5 @@
class Cable.SubscriberManager
- constructor: (@cable) ->
+ constructor: (@consumer) ->
@subscribers = []
add: (subscriber) ->
@@ -33,4 +33,4 @@ class Cable.SubscriberManager
sendCommand: (subscriber, command) ->
{identifier} = subscriber
return true if identifier is Cable.PING_IDENTIFIER
- @cable.send({command, identifier})
+ @consumer.send({command, identifier})
diff --git a/lib/assets/javascripts/cable/subscription.js.coffee b/lib/assets/javascripts/cable/subscription.js.coffee
index 8057ff7790..74cc35a7a7 100644
--- a/lib/assets/javascripts/cable/subscription.js.coffee
+++ b/lib/assets/javascripts/cable/subscription.js.coffee
@@ -1,8 +1,8 @@
class Cable.Subscription
- constructor: (@cable, params = {}, mixin) ->
+ constructor: (@consumer, params = {}, mixin) ->
@identifier = JSON.stringify(params)
extend(this, mixin)
- @cable.subscribers.add(this)
+ @consumer.subscribers.add(this)
# Perform a channel action with the optional data passed as an attribute
perform: (action, data = {}) ->
@@ -10,10 +10,10 @@ class Cable.Subscription
@send(data)
send: (data) ->
- @cable.send(command: "message", identifier: @identifier, data: JSON.stringify(data))
+ @consumer.send(command: "message", identifier: @identifier, data: JSON.stringify(data))
unsubscribe: ->
- @cable.subscribers.remove(this)
+ @consumer.subscribers.remove(this)
extend = (object, properties) ->
if properties?