module Faye::WebSocket::API::EventTarget
def add_event_listener(event_type, listener, use_capture = false)
def add_event_listener(event_type, listener, use_capture = false) add_listener(event_type, &listener) end
def add_listener(event_type, callable = nil, &block)
def add_listener(event_type, callable = nil, &block) listener = callable || block EventMachine.next_tick do flush(event_type, listener) super(event_type, &listener) end end
def dispatch_event(event)
def dispatch_event(event) event.target = event.current_target = self event.event_phase = Event::AT_TARGET listener = instance_variable_get("@on#{ event.type }") count = listener_count(event.type) unless listener or count > 0 event_buffers[event.type].push(event) end listener.call(event) if listener emit(event.type, event) end
def event_buffers
def event_buffers @event_buffers ||= Hash.new { |k,v| k[v] = [] } end
def flush(event_type, listener)
def flush(event_type, listener) if buffer = event_buffers.delete(event_type.to_s) buffer.each { |event| listener.call(event) } end end
def remove_event_listener(event_type, listener, use_capture = false)
def remove_event_listener(event_type, listener, use_capture = false) remove_listener(event_type, &listener) end