An EventSource client based off Celluloid::IO.
Specification based on EventSource
Add this line to your application's Gemfile:
gem 'celluloid-eventsource'
And then execute:
$ bundle
Or install it yourself as:
$ gem install celluloid-eventsource
then somewhere in your project:
require 'celluloid/eventsource'
Initializing a new Celluloid::EventSource object will create the connection:
es = Celluloid::EventSource.new("http://example.com/")Messages can be received on events such as on_open, on_message and on_error.
These can be assigned at initialize time
es = Celluloid::EventSource.new("http://example.com/") do |conn|
conn.on_open do
puts "Connection was made"
end
conn.on_message do |event|
puts "Message: #{event.data}"
end
conn.on_error do |message|
puts "Response status #{message[:status_code]}, Response body #{message[:body]}"
end
conn.on(:time) do |event|
puts "The time is #{event.data}"
end
endTo close the connection #close will shut the socket connection but keep the actor alive.
Event handlers should be added when initializing the eventsource.
Warning To change event handlers after initializing there is a Gotcha. Celluloid sends messages to actors through thread-safe proxies.
To get around this, use wrapped_object to set the handler on the actor but be aware of the concequences.
es.wrapped_object.on_messsage { |message| puts "Different #{message}" }This same concept applies for changing the url of the eventsource.
- Fork it
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create new Pull Request

