Skip to content

araneo/rocket

Repository files navigation

Launch your web Rocket!

Rocket is very fast and reliable WebSockets server built upon em-websockets library. Rocket provides also JavaScript toolkit to serve up instructions to clients, and ruby library which handles events triggering. This Project was strongly inspired by awesome PusherApp.

Installation

All Rockets' components (server, ruby client, javascript library), can be installed easily with rubygems (via rocket meta package):

$ gem install rocket

... or directly from source:

$ git clone git://github.com/araneo/rocket
$ cd rocket/rocket
$ rake install

Server

The main Rocket's feature is powerfull, event-oriented server. Here's simple scenario of usage:

Generate configuration and customize it:

$ rocket-server configure /etc/rocket/rocket.yml

Run server:

$ rocket-server start
$ rocket-server start -c my-config.yml      # with other configuration
$ rocket-server start -h myhost.com -p 8080 # custom host and port
$ rocket-server start -D -v                 # verbose and debug mode
$ rocket-server start -d -P my.pid          # daemonized
...

Play with it!

Ruby client

Ruby client library serves to triggering events. Playing with it is very simple:

require 'rocket'

rocket = Rocket::Client.new('ws://localhost:9772', 'test_app', 'my-secret-key')
rocket['my-channel'].trigger('my-event', {:foo => :bar});

JavaScript library

JavaScript toolkit provided by Rocket is very similar to this from PusherApp. It allows to serve up instructions to clients using events. Take a look for example usage:

$ rocket-js generate /path/to/website/public

Command above will generate all necessary javascript and swf files in your public directory. Now you can use it in your app:

<script type="text/javascript">

  WEB_SOCKET_SWF_LOCATION = 'WebSocketMain.swf';
  WEB_SOCKET_DEBUG = false;

  rocket = new Rocket('ws://localhost:9772', 'test_app');
  myChannel = rocket.subscribe('my-channel');
  myChannel.bind('my-event', function(data) {
    // play with data object
  });
  
</script>

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.

Copyright

Copyright (c) 2010 Araneo Ltd. See LICENSE for details.