Screencast: Einfaches Messaging mit Faye

Faye ist ein einfach zu benutzendes messaging system, welches auf dem Bayeux Protokoll basiert. In diesem Screencast könnt ihr sehen wie es in Rails eingesetzt werden kann.

Be Sociable, Share!
 

Download:

Download(17.9 MB, 13:42)
Alternativer Download für iPod & Apple TV(18.5 MB, 13:42)

 

Resourcen:

 

Quellcode:

gem install faye
rackup faye.ru -s thin -E production
curl http://localhost:9292/faye -d 'message={"channel":"/messages/new", "data":"hello"}'
# config/application.rb
require "net/http"

# config/initializers/faye_token.rb
FAYE_TOKEN = "anything"

# application_helper.rb
def broadcast(channel, &block)
  message = {:channel => channel, :data => capture(&block), :ext => {:auth_token => FAYE_TOKEN}}
  uri = URI.parse("http://localhost:9292/faye")
  Net::HTTP.post_form(uri, :message => message.to_json)
end

# faye.ru
require 'faye'
require File.expand_path('../config/initializers/faye_token.rb', __FILE__)

class ServerAuth
  def incoming(message, callback)
    if message['channel'] !~ %r{^/meta/}
      if message['ext']['auth_token'] != FAYE_TOKEN
        message['error'] = 'Invalid authentication token'
      end
    end
    callback.call(message)
  end
end

faye_server = Faye::RackAdapter.new(:mount => '/faye', :timeout => 45)
faye_server.add_extension(ServerAuth.new)
run faye_server
<% broadcast "/messages/new" do %>
  $("#chat").append("<%= escape_javascript render(@message) %>");
<% end %>
$("#new_message")[0].reset();
/* application.js */
$(function() {
  var faye = new Faye.Client('http://localhost:9292/faye');
  faye.subscribe("/messages/new", function(data) {
    eval(data);
  });
});
Be Sociable, Share!

Eingestellt am 07.04.2011 um 14:22

Kategorie: Tutorials

Be Sociable, Share!

Kommentare für diesen Artikel wurden geschlossen.

Suchen auf rubyonrails.de

Aktuelle Rails Version + Abhängigkeiten:

Gem rails-3.0.0
actionmailer (= 3.0.0, runtime)
actionpack (= 3.0.0, runtime)
activerecord (= 3.0.0, runtime)
activeresource (= 3.0.0, runtime)
activesupport (= 3.0.0, runtime)
bundler (~> 1.0.0, runtime)
railties (= 3.0.0, runtime)

Rails auf Rubyforge
Rails auf Github