小编cod*_*or5的帖子

Sinatra流和Eventmachine频道

使用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)

ruby sinatra eventmachine

5
推荐指数
1
解决办法
579
查看次数

标签 统计

eventmachine ×1

ruby ×1

sinatra ×1