Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Simple server push implementation using eventmachine and long polling
JavaScript Ruby
tree: ca700995b6

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
bin
config
lib
public
spec
.gitignore
LICENSE
README.md
Rakefile
config.ru
puggernaut.gemspec
puggernaut.png

README.md

Puggernaut

Simple server push implementation using eventmachine and long polling.

Puggernaut

Requirements

gem install puggernaut

How it works

Puggernaut consists of three pieces:

  • TCP client to send push messages
  • TCP server to receive push messages
  • HTTP server to deliver long poll requests

Start it up

Run the puggernaut binary with optional port numbers:

puggernaut <http port> <tcp port>

The default HTTP and TCP ports are 8000 and 8001, respectively.

Set up proxy pass

You will need to set up a URL on your public facing web server that points to the Puggernaut HTTP server.

If you do not see your web server below, Google is your friend.

Apache

http.conf

ProxyPass /long_poll http://localhost:8000/
ProxyPassReverse /long_poll http://localhost:8000/

Nginx

nginx.conf

location /long_poll {
  proxy_pass http://localhost:8000/;
}

Send push messages

require 'puggernaut'

client = Puggernaut::Client.new("localhost:8001", "localhost:9001")
client.push :channel => "message"
client.push :channel => [ "message 1", "message 2" ], :channel_2 => "message"

The Client.new initializer accepts any number of TCP server addresses.

Receive push messages

Include puggernaut.js into to your HTML page.

Javascript client example:

Puggernaut.path = '/long_poll';

Puggernaut
  .watch('channel', function(e, message) {
    // do something with message
  })
  .watch('channel_2', function(e, message) {
    // do something with message
  });

Puggernaut.unwatch('channel');
Something went wrong with that request. Please try again.