1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
rails--rails/actioncable/app/assets/javascripts/action_cable/consumer.coffee
Daniel Rhodes cbd15da027 Added protocol negotiation
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.
2016-04-05 15:55:59 +02:00

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()