lib/sinatra/cometio.rb in sinatra-cometio-0.1.5 vs lib/sinatra/cometio.rb in sinatra-cometio-0.1.6

- old
+ new

@@ -1,12 +1,14 @@ require 'eventmachine' require 'json' require 'digest/md5' require 'event_emitter' require 'sinatra/streaming' -require File.expand_path 'application', File.dirname(__FILE__) require File.expand_path '../sinatra-cometio/version', File.dirname(__FILE__) +require File.expand_path '../sinatra-cometio/options', File.dirname(__FILE__) +require File.expand_path '../sinatra-cometio/application', File.dirname(__FILE__) +Sinatra.register Sinatra::CometIO class CometIO def self.sessions @@sessions ||= Hash.new{|h,session_id| h[session_id] = { @@ -17,19 +19,19 @@ } end def self.gc self.sessions.each do |id, s| - next unless s[:last] and s[:last] < Time.now-60 + next unless s[:last] and s[:last] < Time.now-CometIO.options[:xhr_interval]*2-10 self.sessions.delete id rescue next self.emit :disconnect, id end end EM::defer do loop do self.gc - sleep 60 + sleep CometIO.options[:xhr_interval]+5 end end def self.push(type, data, opt={}) session_ids = opt[:to].to_s.empty? ? self.sessions.keys : [opt[:to]]