我需要使用Sinatra创建一个流媒体网络应用程序,当我打开多个连接时,我尝试使用单个“流媒体”流,这是最好的方法吗?
我几天之前无法测试,但我的主要想法是这样的:
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
答案 0 :(得分:2)
如果您无法使其正常工作:
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
我总是喜欢为sinatra应用程序使用适当的类,在这种情况下,它允许存储连接而不依赖于全局或伪全局变量。