Project

rcomet

0.0
No commit activity in last 3 years
No release in over 3 years
RComet implement the Bayeux protocole to allow you to create client and/or Comet's server.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 1.2.9

Runtime

>= 0
 Project Readme

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.