使用Sinatra Streaming,有一种方法可以指定哪些连接获取发送的信息。例如,只有特定帐户上的用户。
我相信可以使用Eventmachine Channels完成此操作,但我不知道如何做。任何建议,甚至更好的示例代码将不胜感激。
以下是代码的相关部分。现在,您可以看到它只是发送到每个打开的连接。
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
Run Code Online (Sandbox Code Playgroud)