A queue crunching router / relay.

npm install crunch
8 downloads in the last month



A queue crunching router / relay.
This project is still pretty young.

Build Status


To obtain and install, run:

git clone
cd crunch
npm install

To run tests:

make test


To use crunch as a subscriber router/relay:

var Crunch = require('crunch');

var relay = {};

//These relay functions are where you put your custom logic.
relay.subscribe = function () {
    console.log('Will show when subscribed.');

relay.unsubscribe = function () {
    console.log('Will show when unsubscribed.');

relay.message = function (message) {
    console.log('The message sent on this channel is ' + message);
var crunch = Crunch.createInstance({ channel: 'myChannel', hooks: relay });

//Start listening

//Use a redis client to publish some messages to the 'myChannel' channel.
//The relay.message function will be passed the message.

//To end the process

Early Phase Requirements (TODO)

-Specify a channel with configuration for crunch to sub/pub to on redis.

-Messages are expected to be sent in valid parseable JSON. Both direct (value filled) and deferred (provides a 'memory address'-like redis key for another message) messages are understood.

Example messages (aka command sets):

A direct message:
{"cmd":"update", "type":"Tile", "x":0, "y": 16, "layer": 1, "tileid": 17, "mapid": 3, "lastChangedBy": 7 }

A deferred message:
{"cmd":"queue", "key":"tileQueue01234"}

If a router is passed into crunch's config, the router will pass all messages with "cmd":"somename" to the named router function "somename". If no router function has that name, the message is simply ignored. This allows a sort of plugin architecture on a single channel if the developer wishes to have one channel shared across multiple subscribers, each having their own job to do.

npm loves you