2011-12-30 2 views
1

SinatraでストリーミングWebアプリケーションを作成する必要があります。複数の接続を開いているときにストリーミングの単一の「ソース」を使用しようとしました。Sinatraストリーミングアプリ+起動時の定期的なタイマー

私はfews日前にテストすることはできませんが、私の主なアイデアは、このようなものです:私は常に好む

require 'sinatra/base' 

class MyApp < Sinatra::Base 

    set :path, '/tmp' 
    set :environment, 'production' 

    def initialize 
    @connections = [] 

    EM::next_tick do 
     EM::add_periodic_timer(1) do 
     @connections.each do |out| 
      out << "test" << "</br>" 
     end 
     end 
    end 

    end 

    get '/' do 
    stream(:keep_open) do |out| 
     @connections << out 
    end 
    end 

end 

run MyApp.new 

:あなたはそれを動作させるために管理していない場合は

set :server, :thin 
connections = [] 

configure do 
    EventMachine::PeriodicTimer.new(1) do 
    connections.each { |out| out << "test" << "\n" } 
    end 
end 

get '/' do 
    stream(:keep_open) { |out| connections << out } 
end 

答えて

2

この場合、グローバル変数または疑似グローバル変数に依存せずに接続を格納することができます。

関連する問題