lib/sinatra/cometio.rb in sinatra-cometio-0.1.2 vs lib/sinatra/cometio.rb in sinatra-cometio-0.1.3

- old
+ new

@@ -31,25 +31,23 @@ sleep 60 end end def self.push(type, data, opt={}) - if opt[:to] - self.sessions[opt[:to].to_s][:queue].push :type => type, :data => data - else - self.sessions.each do |id,s| - if s[:queue].empty? and s[:stream] != nil - begin - s[:stream].write({:type => type, :data => data}.to_json) - s[:stream].flush - s[:stream].close - rescue - s[:stream].class - s[:queue].push :type => type, :data => data - end - else + session_ids = opt[:to].to_s.empty? ? self.sessions.keys : [opt[:to]] + session_ids.each do |id| + s = self.sessions[id] + if s[:queue].empty? and s[:stream] != nil + begin + s[:stream].write({:type => type, :data => data}.to_json) + s[:stream].flush + s[:stream].close + rescue + s[:stream].close s[:queue].push :type => type, :data => data end + else + s[:queue].push :type => type, :data => data end end end def self.create_session(ip_addr)