W3gram Server

This is a node.js server for the
W3gram push notification protocol.
The server was designed to be deployed to Heroku
using free resources, so it fits in a single dyno. The code has great test
coverage using mocha.
Easy Setup
Click the ''Deploy to Heroku'' button at the top of this page to create your own
W3gram server running on Heroku. Don't worry, the project only uses free
add-ons!
Get your server's MAK and store it somewhere safely.
curl -i https://w3gram-test.herokuapp.com/mak
Create an application and note its API key and secret.
curl -i -X POST -H 'Content-Type: application/json' \
-d '{"mak": "G-TPkmtKOczXx203po1NblklXsK5OXUylUOGkQUxRQk", "app": { "name": "Testing", "origin": "*"}}' \
https://w3gram-test.herokuapp.com/apps
Manual Interaction Example
Create a token for a device ID.
echo -n "device-id|my-tablet" | \
openssl dgst -sha256 -hmac "7cAXyVAYEhRbQ0UFCFI4qJAWOmXLZaPC1xX6niNIxCE" \
-binary | base64
Register the device.
curl -i -X POST -H 'Content-Type: application/json' \
-d '{"app": "uUJPS3zgIpQjDnxn", "device": "my-tablet", "token": "EVwwWmwiIfLbTDV8OWsHVc4r_p2WUpKXIJcXCdtoFxM"}' \
https://w3gram-test.herokuapp.com/register
Do the routing step.
curl -i -X POST -H 'Content-Type: application/json' \
-d '{"app": "uUJPS3zgIpQjDnxn", "device": "my-tablet", "receiver": "1.my-tablet.WMF5TISqRYYkUr5GJWunmP40FvXI1yU_Qb5kXc907TY", "token": "EVwwWmwiIfLbTDV8OWsHVc4r_p2WUpKXIJcXCdtoFxM"}' \
https://w3gram-test.herokuapp.com/route
Start a WebSocket connection:
wscat -c "wss://w3gram-test.herokuapp.com/ws/1.my-tablet.HwVTM_07vSbHzrQHCBeHeLygUuvm5esJa2yzOjwmJwQ"
Send a notification:
curl -i -X POST -H 'Content-Type: application/json' \
-d '{"receiver": "1.my-tablet.WMF5TISqRYYkUr5GJWunmP40FvXI1yU_Qb5kXc907TY", "message": { "data": "Hello push world" } }' \
https://w3gram-test.herokuapp.com/push
Development Setup
Install all dependencies and create PostgreSQL database for development and
testing.
npm install
createdb w3gram_test
createdb w3gram_dev
Run the server in developmentm mode.
npm start
License
This project is Copyright (c) 2014 Victor Costan, and distributed under the MIT
License.