Project

puggernaut

0.0
No commit activity in last 3 years
No release in over 3 years
Simple server push implementation using eventmachine and long polling
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

~> 0.3.1
~> 0.12.10
 Project Readme

Puggernaut

Simple server push implementation using eventmachine and long polling.

Puggernaut

Requirements

gem install puggernaut

How it works

Puggernaut consists of four pieces:

  • TCP client to send push messages
  • TCP server to receive push messages
  • TCP server to deliver messages via WebSockets (em-websocket)
  • HTTP server to deliver messages via long poll

Start it up

Run the puggernaut binary with optional port numbers:

puggernaut <http port> <tcp port> <tcp port (websocket)>

The default HTTP and TCP ports are 8100, 8101, and 8102, respectively.

Set up proxy pass

Set up a URL on your public facing web server that points to the Puggernaut HTTP server (long poll).

We all use Nginx, right?

nginx.conf

server {
	location /long_poll {
	  proxy_pass http://localhost:8100/;
	}
}

Send push messages

require 'puggernaut'

client = Puggernaut::Client.new("localhost:8101", "localhost:9101")
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 jQuery and puggernaut.js into to your HTML page.

Javascript client example:

Puggernaut.path = '/long_poll'; // (default long poll path)
Puggernaut.port = 8102; 		// (default WebSocket port)

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

Puggernaut.unwatch('channel');

Running specs

Specs are a work in progress, though we can vouch for some of the functionality :).

Set up Nginx to point to a cloned copy of this project:

nginx.conf

server {
	listen 80;
	server_name localhost;
	root /Users/me/puggernaut/public;
	passenger_enabled on;
	
	location /long_poll {
		proxy_pass http://localhost:8100/;
	}
}

You have now set up an instance of Puggernaut's spec server.

Start up an instance of Puggernaut by running bin/puggernaut.

When you visit http://localhost you will find a page that executes QUnit specs.