Faye

Simple pub/sub messaging for the web

Ruby server

Server-side Ruby clients

You can use Faye clients on the server side to send messages to in-browser clients or to other server-side processes. The API is identical to the browser client.

To create a client, just supply the host you want to connect to:

client = Faye::Client.new('http://localhost:9292/faye')

You can then use client.subscribe() and client.publish() to send messages to other clients; the API is similar to the browser client only you need to run the client inside EventMachine:

require 'eventmachine'

EM.run {
  client = Faye::Client.new('http://localhost:9292/faye')

  client.subscribe('/foo') do |message|
    puts message.inspect
  end

  client.publish('/foo', 'text' => 'Hello world')
}

If you need to set custom headers to talk to your Bayeux server, use the set_header method:

client.set_header('Authorization', 'OAuth abcd-1234')

The server has its own client attached to it so you can use the server to send messages to browsers. This client has direct access to the server without going over HTTP, and is thus more efficient. To send messages through the server just use the #get_client method.

bayeux.get_client.publish('/email/new', {
  'text'      => 'New email has arrived!',
  'inboxSize' => 34
})