orbited
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:A Rails plugin to make it easier to add Orbited support to your Rails app
Orbited on Rails
================

Orbited on Rails is a plugin that makes it easy for your Rails application to use Comet to push changes to your users.

[Comet][1], also known as Reverse Ajax and server push (among other nicknames),
is a method of pushing data to your users without polling. [Orbited](htttp://orbited.org) is one implementation of this
method that uses a Python push server that can interact with a number of messaging protocols such as STOMP, IRC, and XMPP.

Traditionally, when web devolopers have a need to broadcast any data to people currently using the site, such as people
using a chat interface, they would use polling. Each client browser would, after a certain interval, send a request
to the server to see if there had been any changes, and update accordingly. However, there are a few problems with this
method. If you set the interval too high, then some people might be waiting a while to see the changes. If the interval
is too low, then the server is constantly being hammered and could run out of resources.

Orbited to the rescue! Orbited allows browsers to hold a long connection to the server with little overhead so that
changes can be pushed to all connected clients simultaneously. This Rails plugin allows you to add Orbited support
in just a few lines of code.

Note:
Currently, this plugin only supports the STOMP protocol, but I hope to add support for the other protocols in the future.

## Requirements

* [Python 2.5][2] or greater
* [Twisted][3]
* [Orbited][4]
* The STOMP gem
* Prototype
* and of course, Ruby on Rails

## Installation

### Prerequisites

Installation instructions for the first few requirements can be found on the [Orbited installation page][5].

Install the STOMP gem with `gem install stomp`.

### Plugin

To install this plugin, type

	cd your/rails/app
	script/plugin install git://github.com/mallio/orbited

This will create an `orbited.yml` file in your config directory. 

## Configuration

Open `config/orbited.yml` in your text editor of choice. Reasonable defaults have been chosen.

Basic settings:

* `host` and `port`: These fields tell your application where the Orbited server is running 
* `protocol`: The messaging protocol you web application should use. Currently, the only supported value is `stomp`
* `stomp_host` and `stomp_port`: The location of your STOMP server
* `stomp_user` and `stomp_password`: If your stomp server requires a login, usethese fields
* `version`: Will be added to the end of included js files. Change this any time you upgrade your orbited version to force browsers to reload the files

Configuration settings used to generate the Orbited config file:

* `reactor`: Which Twisted reactor to use. Possible values are `select`, `epoll`, and `kqueue`. `select` is the only one that will work in Windows. [More info...][7]
* `morbidq`: Tells the Orbited server to use its built in MorbidQ STOMP server. This is not reccomended for production, but is convenient for development.
* `restrict_access`: Make the Orbited server only proxy requests to the STOMP server when the request comes from the host and port specified for the Orbited server.
* `ssl_enabled`: 1 to enable ssl. You will need the below fields to do so.
* `ssl_port`: Which port to use for the ssl server
* `ssl_key` and `ssl_crt`: The paths to the ssl key and certificate

Once you are happy with the settings in `orbited.yml`, type

	script/generate orbited_config

This will generate `config/orbited.cfg`. If you wish, you can further configure your Orbited server by editting this file, but if you run the generator again,
your changes will be overwritten. For possible options, see the [Orbited configuration page][6].

## Usage

Now that everything is set up, you can have Orbited running with your app in just a few steps. 

In the `` of the view you want to use Orbited in, add the following lines:

	<%= orbited_javascript %>
	<%= stomp_connect('hello') %>

Make sure prototype.js is included as well. This will include the necessary js files, connect to your STOMP server, and subscribe to the channel 'hello'.
If you want to use some of the STOMP callbacks, you can do so by replacing the connect line with something like:

	<%= stomp_connect('hello', :onerror => 'errorHandler', :onclose => 'function(){alert("closed!")}') %>

Please note that by default the `onconnectedframe` callback is used to subscribe to the specified channel, and if you override it you will
need to subscribe to the channel on your own. Also, the `onmessageframe` callback defaults to evaluating the received data as javascript, and you
will need to override it to use your own handler.

Next, in your controller, you can write actions that send data to any user that is on your view.

	def add_line
	  data = render_to_string :update do |page|
	  	page['chat-window'].insert :bottom => params[:entry]
	  end
	  Orbited.send_data('hello', data)
	end

This will generate javascript to insert the 'entry' parameter into the 'chat-window' element, and then sends that data through the Orbited server to anyone
subscribed to the 'hello' channel.

## Special notes for Production

You will need to edit your orbited.yml file to reflect the actual host that the orbited server will run on. Also, you should also find a more production
ready STOMP server, as the built in MorbidQ was developed to be easy, not scalable. They list alternatives on [their website][8]. Also,
to generate the configuration file from your production settings in orbited.yml, type

	script/generate orbited_config production

[1]: http://en.wikipedia.org/wiki/Comet_(programming)
[2]: http://www.python.org/
[3]: http://twistedmatrix.com/trac/
[4]: http://orbited.org
[5]: http://orbited.org/wiki/Installation
[6]: http://orbited.org/wiki/Configuration
[7]: http://orbited.org/wiki/Configuration#reactor
[8]: http://morbidq.com/

本源码包内暂不包含可直接显示的源代码文件,请下载源码包。