Skip to content
/ rcomet Public

RComet is an implementation of the Bayeux protocol in Ruby.

License

Notifications You must be signed in to change notification settings

gdo/rcomet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 |message|
    # 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( message['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.

About

RComet is an implementation of the Bayeux protocol in Ruby.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages