module Faye::WebSocket::API
def initialize(options = {})
def initialize(options = {}) @ready_state = CONNECTING super() ::WebSocket::Driver.validate_options(options, [ :headers, :extensions, :max_length, :ping, :proxy, :tls, :binary_data_format ]) @driver = yield if headers = options[:headers] headers.each { |name, value| @driver.set_header(name, value) } end [*options[:extensions]].each do |extension| @driver.add_extension(extension) end @ping = options[:ping] @ping_id = 0 @buffered_amount = 0 @close_params = @close_timer = @ping_timer = @proxy = @stream = nil @onopen = @onmessage = @onclose = @onerror = nil @driver.on(:open) { |e| open } @driver.on(:message) { |e| receive_message(e.data) } @driver.on(:close) { |e| begin_close(e.reason, e.code, :wait_for_write => true) } @driver.on(:error) do |error| emit_error(error.message) end if @ping @ping_timer = EventMachine.add_periodic_timer(@ping) do @ping_id += 1 ping(@ping_id.to_s) end end end