Sha256: 0928e974f177eeaf82e57f32b17069c82a4189e6eb7af11f48ef440651de44e6

Contents?: true

Size: 1.09 KB

Versions: 11

Compression:

Stored size: 1.09 KB

Contents

require File.expand_path('../../lib/faye/websocket', __FILE__)
require 'rack'

static = Rack::File.new(File.dirname(__FILE__))

App = lambda do |env|
  if Faye::WebSocket.websocket?(env)
    ws = Faye::WebSocket.new(env, ['irc', 'xmpp'], :ping => 5)
    p [:open, ws.url, ws.version, ws.protocol]
    
    ws.onmessage = lambda do |event|
      ws.send(event.data)
    end
    
    ws.onclose = lambda do |event|
      p [:close, event.code, event.reason]
      ws = nil
    end
    
    ws.rack_response
  
  elsif Faye::EventSource.eventsource?(env)
    es   = Faye::EventSource.new(env)
    time = es.last_event_id.to_i
    
    p [:open, es.url, es.last_event_id]
    
    loop = EM.add_periodic_timer(2) do
      time += 1
      es.send("Time: #{time}")
      EM.add_timer(1) do
        es.send('Update!!', :event => 'update', :id => time) if es
      end
    end
    
    es.send("Welcome!\n\nThis is an EventSource server.")
    
    es.onclose = lambda do |event|
      EM.cancel_timer(loop)
      p [:close, es.url]
      es = nil
    end
    
    es.rack_response
  
  else
    static.call(env)
  end
end

Version data entries

11 entries across 11 versions & 2 rubygems

Version Path
faye-websocket-0.4.6-java examples/app.rb
faye-websocket-0.4.6 examples/app.rb
faye-websocket-0.4.5-java examples/app.rb
faye-websocket-0.4.5 examples/app.rb
_bushido-faye-websocket-0.4.4 examples/app.rb
faye-websocket-0.4.4-java examples/app.rb
faye-websocket-0.4.4 examples/app.rb
faye-websocket-0.4.3 examples/app.rb
faye-websocket-0.4.2 examples/app.rb
faye-websocket-0.4.1 examples/app.rb
faye-websocket-0.4.0 examples/app.rb