Sha256: bcaa313372bbab2f552ab99f0ca57c2f30f1d661850b08be195925cc495cc62b
Contents?: true
Size: 1.72 KB
Versions: 2
Compression:
Stored size: 1.72 KB
Contents
#= require "moz_websocket" #= require "vendor/jquery.json-2.2" #= require "vendor/swfobject" #= require "vendor/web_socket" //= provide "../swf" window.WEB_SOCKET_SWF_LOCATION = "<%= asset_path 'WebSocketMain.swf' %>" class @AlondraClient constructor: (@server, @channels=[], @token = null, @retry = 10000) -> @channels = [@channels] unless @channels instanceof Array @url = "ws://#{@server}" @url += "?token=#{@token}" if @token @connect() subscribe: (channel) => if @socket.readyState == 0 # Socket is connecting @channels.push(channel) # Schedule for later subscription return subscription = command: 'subscribe' channel: channel @socket.send $.toJSON(subscription) @ opened: () => if @reconnectInterval clearInterval(@reconnectInterval) @reconnectInterval = null @subscribe(channel) for channel in @channels $(this).trigger('connected') true connect: => @socket = new WebSocket(@url) @socket.onopen = @opened @socket.onclose = () => this.reconnect() $(this).trigger('disconnected') @socket.onmessage = (message) => msg = $.parseJSON(message.data) if msg.event @process(msg) else @execute(msg) @socket.onerror = (error) => @reconnect() $(this).trigger('error', error) @ process: (serverEvent) -> eventName = serverEvent.event resourceType = serverEvent.resource_type resource = serverEvent.resource $(@).trigger("#{eventName}.#{resourceType}", resource) execute: (message) -> eval(message.message) reconnect: -> return if !@retry || @reconnectInterval @reconnectInterval = setInterval => this.connect() ,@retry
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
alondra-0.1.1 | app/assets/javascripts/alondra-client.js.coffee.erb |
alondra-0.1.0 | app/assets/javascripts/alondra-client.js.coffee.erb |