Skip to content

Instantly share code, notes, and snippets.

@Epictetus
Forked from fractaloop/metaserver.rb
Created June 29, 2012 19:55
Show Gist options
  • Save Epictetus/3020293 to your computer and use it in GitHub Desktop.
Save Epictetus/3020293 to your computer and use it in GitHub Desktop.
Rails 3.1 Sinatra streaming question...
require 'sinatra'
require 'thin'
class Metaserver < Sinatra::Base
set server: 'thin'
set connections: []
get '/stream', provides: 'text/event-stream' do
stream :keep_open do |out|
settings.connections << out
out.callback { settings.connections.delete(out) }
out.errback { settings.connections.delete out }
end
end
post '/stream' do
puts "Relay to #{settings.connections.count} streams"
settings.connections.each { |out| out << "data: #{params[:msg]}\n\n" }
204 # response without entity body
end
end
require 'metaserver'
Metaverse::Application.routes.draw do
match '/stream', :to => Metaserver
resource :login, :only => :show
resource :explore, :only => :show, :controller => 'explore'
root :to => 'login#show'
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment