Sha256: 181ab83ee240ff4a5c422613860f7a3f0a713f80a39d3ceeb88749cab425bb7f

Contents?: true

Size: 1.08 KB

Versions: 3

Compression:

Stored size: 1.08 KB

Contents

class Firehose.Transport
  # Class method to determine whether transport is supported by the current browser. Note that while
  # the transport may be supported by the browser, its possible that the network connection won't 
  # succeed. That should be accounted for during the initial connecting to the server.
  @supported: =>
    false

  constructor: (config={}) ->
    @config = config
    @_retryDelay = 5000 

  # Lets rock'n'roll! Connect to the server.
  connect: (delay = 0) =>
    setTimeout =>
      @_request()
    , delay
    this

  # Sub classes need to implement this method to handle requests
  _request: =>

  # Default error handler
  _error: (event) =>
    unless @_succeeded
      # Fail peremantly if the error happens on the first connection.
      @config.failed(this)
    else
      # Lets try to connect again with delay
      @config.disconnected()
      @connect(@_retryDelay)

  # Default connection established handler
  _open: (event) =>
    @_succeeded = true
    @config.connected(@)

  # Default connection closed handler
  _close: (event) =>
    @config.disconnected()

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
firehose-0.2.alpha.5 lib/assets/javascripts/firehose/transport.js.coffee
firehose-0.2.alpha.3 lib/assets/javascripts/firehose/transport.js.coffee
firehose-0.2.alpha.2 lib/assets/javascripts/firehose/transport.js.coffee