mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
cbd15da027
This is primarily for backwards compatibility for when or if the protocol is changed in future versions. If the server fails to respond with an acceptable protocol, the client disconnects and disables the monitor.
46 lines
1.4 KiB
CoffeeScript
46 lines
1.4 KiB
CoffeeScript
#= require ./connection
|
|
#= require ./subscriptions
|
|
#= require ./subscription
|
|
|
|
# The ActionCable.Consumer establishes the connection to a server-side Ruby Connection object. Once established,
|
|
# the ActionCable.ConnectionMonitor will ensure that its properly maintained through heartbeats and checking for stale updates.
|
|
# The Consumer instance is also the gateway to establishing subscriptions to desired channels through the #createSubscription
|
|
# method.
|
|
#
|
|
# The following example shows how this can be setup:
|
|
#
|
|
# @App = {}
|
|
# App.cable = ActionCable.createConsumer "ws://example.com/accounts/1"
|
|
# App.appearance = App.cable.subscriptions.create "AppearanceChannel"
|
|
#
|
|
# For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.
|
|
#
|
|
# When a consumer is created, it automatically connects with the server.
|
|
#
|
|
# To disconnect from the server, call
|
|
#
|
|
# App.cable.disconnect()
|
|
#
|
|
# and to restart the connection:
|
|
#
|
|
# App.cable.connect()
|
|
#
|
|
# Any channel subscriptions which existed prior to disconnecting will
|
|
# automatically resubscribe.
|
|
class ActionCable.Consumer
|
|
constructor: (@url) ->
|
|
@subscriptions = new ActionCable.Subscriptions this
|
|
@connection = new ActionCable.Connection this
|
|
|
|
send: (data) ->
|
|
@connection.send(data)
|
|
|
|
connect: ->
|
|
@connection.open()
|
|
|
|
disconnect: ->
|
|
@connection.close(allowReconnect: false)
|
|
|
|
ensureActiveConnection: ->
|
|
unless @connection.isActive()
|
|
@connection.open()
|