% gem install sinatra thin sinatra-contrib
% ruby sinatra-comet.rb
GET
% curl http://localhost:4567/comet/test
=> wait response
then, POST
% curl -d 'data=hello' http://localhost:4567/comet/test
% gem install sinatra thin sinatra-contrib
% ruby sinatra-comet.rb
GET
% curl http://localhost:4567/comet/test
=> wait response
then, POST
% curl -d 'data=hello' http://localhost:4567/comet/test
#!/usr/bin/env ruby | |
require 'rubygems' | |
require 'sinatra' | |
require 'thin' | |
require 'sinatra/streaming' | |
@@comet = Hash.new | |
post '/comet/:channel' do | |
channel = params['channel'] | |
data = params[:data] | |
@@comet[channel] = data | |
data | |
end | |
get '/comet/:channel' do | |
channel = params['channel'] | |
stream do |s| | |
data = nil | |
loop do | |
break if (data = @@comet.delete channel) | |
sleep 1 | |
end | |
s.write data | |
s.flush | |
end | |
end |