使用Sinatra Streaming可以指定哪些连接获取发送信息。例如,仅限特定帐户的用户。
我相信这可以使用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
答案 0 :(得分:0)
您可以使用条件。在您的情况下,您可以使用Sinatra自述文件中提供的授权示例,并具有两个具有不同授权的完全相同的路由。这样,如果第一个条件失败,它将检查第二个路径,然后应该流。可能有一个单一路线的解决方案,但还没有尝试过流媒体。