diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2015-07-08 14:42:04 +0200 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2015-07-08 14:42:04 +0200 |
commit | c70892827698bea48ceb723b6920ebf5b607d069 (patch) | |
tree | f878f3fc86f24503c011ca29f71b07d2c94aec7d /lib/assets/javascripts/cable/subscription.js.coffee | |
parent | fdd5c925f5ee668ecf7a21b90b90a5f01b535d13 (diff) | |
download | rails-c70892827698bea48ceb723b6920ebf5b607d069.tar.gz rails-c70892827698bea48ceb723b6920ebf5b607d069.tar.bz2 rails-c70892827698bea48ceb723b6920ebf5b607d069.zip |
Document the JavaScript classes
Diffstat (limited to 'lib/assets/javascripts/cable/subscription.js.coffee')
-rw-r--r-- | lib/assets/javascripts/cable/subscription.js.coffee | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/assets/javascripts/cable/subscription.js.coffee b/lib/assets/javascripts/cable/subscription.js.coffee index b60033098a..5b024d4e15 100644 --- a/lib/assets/javascripts/cable/subscription.js.coffee +++ b/lib/assets/javascripts/cable/subscription.js.coffee @@ -1,3 +1,48 @@ +# A new subscription is created through the Cable.Subscriptions instance available on the consumer. +# It provides a number of callbacks and a method for calling remote procedure calls on the corresponding +# Channel instance on the server side. +# +# An example demonstrates the basic functionality: +# +# App.appearance = App.cable.subscriptions.create "AppearanceChannel", +# connected: -> +# # Called once the subscription has been successfully completed +# +# appear: -> +# @perform 'appear', appearing_on: @appearingOn() +# +# away: -> +# @perform 'away' +# +# appearingOn: -> +# $('main').data 'appearing-on' +# +# The methods #appear and #away forward their intent to the remote AppearanceChannel instance on the server +# by calling the `@perform` method with the first parameter being the action (which maps to AppearanceChannel#appear/away). +# The second parameter is a hash that'll get JSON encoded and made available on the server in the data parameter. +# +# This is how the server component would look: +# +# class AppearanceChannel < ApplicationCable::Channel +# def subscribed +# current_user.appear +# end +# +# def unsubscribed +# current_user.disappear +# end +# +# def appear(data) +# current_user.appear on: data['appearing_on'] +# end +# +# def away +# current_user.away +# end +# end +# +# The "AppearanceChannel" name is automatically mapped between the client-side subscription creation and the server-side Ruby class name. +# The AppearanceChannel#appear/away public methods are exposed automatically to client-side invocation through the @perform method. class Cable.Subscription constructor: (@subscriptions, params = {}, mixin) -> @identifier = JSON.stringify(params) |