dial-a-device-node
Version:
dial-a-device-node is the device interface for dial-a-device
71 lines (58 loc) • 2.46 kB
text/coffeescript
###
The channel object is returned when you subscribe to a channel.
For instance:
var dispatcher = new WebSocketRails('localhost:3000/websocket');
var awesome_channel = dispatcher.subscribe('awesome_channel');
awesome_channel.bind('event', function(data) { console.log('channel event!'); });
awesome_channel.trigger('awesome_event', awesome_object);
If you want to unbind an event, you can use the unbind function :
awesome_channel.unbind('event')
###
class WebSocketRails.Channel
constructor: (, , = false, , ) ->
= {}
= undefined
= []
if
event_name = 'websocket_rails.subscribe_private'
else
event_name = 'websocket_rails.subscribe'
= ._conn?.connection_id
event = new WebSocketRails.Event( [event_name, {data: {channel: }}, ], , )
.trigger_event event
destroy: ->
if == ._conn?.connection_id
event_name = 'websocket_rails.unsubscribe'
event = new WebSocketRails.Event( [event_name, {data: {channel: }}, ] )
.trigger_event event
= {}
bind: (event_name, callback) ->
[event_name] ?= []
[event_name].push callback
unbind: (event_name) ->
delete [event_name]
trigger: (event_name, message) ->
event = new WebSocketRails.Event( [event_name, {channel: , data: message, token: }, ] )
if !
.push event
else
.trigger_event event
dispatch: (event_name, message) ->
if event_name == 'websocket_rails.channel_token'
= ._conn?.connection_id
= message['token']
else
return unless [event_name]?
for callback in [event_name]
callback message
# using this method because will not be defined when the constructor is executed
_success_launcher: (data) =>
if ?
# using this method because will not be defined when the constructor is executed
_failure_launcher: (data) =>
if ?
flush_queue: ->
for event in
.trigger_event event
= []