使用Sinatra Streaming可以指定哪些連接獲得發送信息。例如只有特定帳戶的用戶。Sinatra Streaming和Eventmachine Channels
我相信這可以使用Eventmachine通道完成,但我不知道如何。任何意見,甚至更好的示例代碼將不勝感激。
以下是代碼的相關部分。現在你可以看到它只是發送到每個打開的連接。
configure do
set server: 'thin', connections: []
set :app_file, __FILE__
set :port, ENV['PORT']
set :public_folder, File.dirname(__FILE__) + '/public'
end
get '/stream', provides: 'text/event-stream' do
stream :keep_open do |out|
settings.connections << out
out.callback { settings.connections.delete(out) }
end
end
post '/update/contact/:id' do
@contact = Contact.get(params[:id])
@contact.update(params[:contact])
settings.connections.each { |out| out << "data: #{@contact.account_id} Contact #{@contact.id} #{@contact.first_name} #{@contact.last_name}\n\n" }
204
end
我實際上正在爲同樣的事情而奮鬥。 – 2012-07-31 22:06:26
@ codefor5我面臨着類似的技術挑戰,您可以發佈您使用的解決方案嗎? – hershey92 2014-03-06 07:45:48