Websocket based asynchronous message delivery.
Erlang Shell Makefile
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
apps/howl
hooks
rel
share
snmp/conf
.gitignore
LICENSE
Makefile
README.md
dialyzer.mittigate
elvis.config
fifo.mk
generate_zabbix_template.sh
rebar.config
rebar.lock
rebar3
tree

README.md

Howl

Howl is a riak_core and web-socket based message delivery system. The architecture is as follows:

  1. The front end is a cowboy web server that accepts web socket connections.
  2. The backend is a simple TPC/BERT based protocol.
  3. Each riak_core node offers both a front end and a backend, those front and back ends are equal, as in sending messages to any backend will reach any front end.
  4. Messages are send to channels, and clients can subscribe to channels.

Web socket protocol

The following JSON encoded messages can be send to the web socket fronted. Those messages are checked against an authentication mechanism. Received messages are JSON encoded strings.

{auth: {'user': user.value, 'pass': pass.value}}
{join: input.value}

Auth

Will authenticate the web socket for permission checking.

Join

Will join a channel for the websocket.

TPC protocol

The following TPC messages are known by the protocol. An example implementation can be found in libhowl.

{msg, Channel, Msg}

msg

Sends Msg to the given Channel.

  • Msg should be in a format that it can be encoded jsx.
  • Channel should be an binary.

Authentication

The only authentication mechanism supported right now is via the Snarl AAA server.