Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
RComet is an implementation of the Bayeux protocol in Ruby.
Ruby
Branch: master
Pull request Compare This branch is 3 commits behind gdo:master.

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
bin
examples
lib
spec
.gitignore
History.rdoc
LICENSE
README.rdoc
Rakefile
VERSION
rcomet.gemspec

README.rdoc

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.

Something went wrong with that request. Please try again.