rcomet
DESCRIPTION:
RComet is an implementation of the Bayeux protocol in Ruby. Bayeux Protocol : svn.cometd.org/trunk/bayeux/bayeux.html
FEATURES/PROBLEMS:
-
It was tested only with Dojo
-
Does not work with Thin :(
SYNOPSIS:
Server
require 'rcomet/server'
# We create a new RComer server
server = RComet::Server.new( :host => '0.0.0.0', :port => 8990, :server => :mongrel, :mount => '/' ) {
# We create a new channel (/graph) with a callback to manipulate recieved data
channel['/graph'].callback do ||
# Someone have send data on channel /graph
# We push the data message to the same channel
# We don't need to do this... But it's an example
channel['/graph'].data( ['data'] )
end
}
# Let's start the server
server.start
# Then we start for a infinity loop
while true
# We push new data to the channel /graph every 5 second
server.channel['/graph'].data( [rand(10),rand(10),rand(10),rand(10),rand(10),rand(10),rand(10),rand(10)] )
sleep(5)
end
Client
require 'rcomet/client'
# Initialisation
x = RComet::Client.new( 'http://localhost:8990/' )
# Handshake
x.handshake
# Publication
x.publish( '/login', "daemon" );
# Subscriptions
x.subscribe( "/from/greg" ) { |r|
puts "#{r["username"]} : #{r["message"]}"
}
x.subscribe( "/from/daemon" ) { |r|
puts "#{r["username"]} : #{r["message"]}"
}
# Connection
x.connect
# Mainloop
msg = ""
while msg != "quit"
msg = $stdin.readline.chomp
unless msg == "quit"
channel = "/from/daemon"
data = { "username" => "daemon", "message" => msg }
r = x.publish( channel, data )
unless r["successful"]
puts "=> Message not send !"
end
end
end
x.disconnect
More…
See examples…
REQUIREMENTS:
-
json
-
rack
INSTALL:
gem install rcomet
LICENSE:
RComet is freely distributable according to the terms of the GNU General Public License.
This program is distributed without any warranty. See the file ‘LICENCE’ for details.