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]]