class Faye::WebSocket

def self.determine_url(env)

def self.determine_url(env)
  secure = Rack::Request.new(env).ssl?
  scheme = secure ? 'wss:' : 'ws:'
  "#{ scheme }//#{ env['HTTP_HOST'] }#{ env['REQUEST_URI'] }"
end

def self.ensure_reactor_running

def self.ensure_reactor_running
  Thread.new { EventMachine.run } unless EventMachine.reactor_running?
  Thread.pass until EventMachine.reactor_running?
end

def self.load_adapter(backend)

def self.load_adapter(backend)
  const = Kernel.const_get(ADAPTERS[backend]) rescue nil
  require(backend) unless const
  path = File.expand_path("../adapters/#{backend}.rb", __FILE__)
  require(path) if File.file?(path)
end

def self.websocket?(env)

def self.websocket?(env)
  ::WebSocket::Driver.websocket?(env)
end

def initialize(env, protocols = nil, options = {})

def initialize(env, protocols = nil, options = {})
  WebSocket.ensure_reactor_running
  @env     = env
  @url     = WebSocket.determine_url(@env)
  @driver  = ::WebSocket::Driver.rack(self, :protocols => protocols)
  @stream  = Stream.new(self)
  @ping    = options[:ping]
  @ping_id = 0
  if callback = @env['async.callback']
    callback.call([101, {}, @stream])
  end
  super()
  @driver.start
end

def rack_response

def rack_response
  [ -1, {}, [] ]
end

def write(data)

def write(data)
  @stream.write(data)
end