Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/artyom/wspush

Service to deliver redis PUBSUB messages over websocket
https://github.com/artyom/wspush

pubsub websocket

Last synced: about 1 month ago
JSON representation

Service to deliver redis PUBSUB messages over websocket

Awesome Lists containing this project

README

        

Command wspush implements http service relaying redis pubsub messages to
websocket connections or as server-sent events.

wspush subscribes to redis channel(s) using "PSUBSCRIBE prefix*" command
where prefix can be set with -prefix flag. When it receives a message
published to "prefixFoo" channel, it looks up any connected client(s) with
query string parameter "token=Foo" and sends message to each client as a
single websocket binary frame.

If client connects to path ending with /sse, or having "Accept:
text/event-stream" header, messages are delivered as server-sent events
(https://www.w3.org/TR/eventsource/), with default "message" event type. It
is expected that message published to redis is valid utf8 string.

If program started with -hmac flag set to base64 encoded (url-compatible,
padless) secret key, this key is used to verify tokens, which then must be
base64 encoded (url-compatible, padless) values of payload concatenated with
its md5 HMAC signature. Alternatively, key value can also be passed with
WSPUSH_KEY environment variable.

If wspush is started with -ping set to some arbitrary payload, that payload will
be sent as a heartbeat every 45 seconds. Otherwise, an empty ping will be sent
instead ("ping" message for server-sent events, or unsollicited "pong" frame for
websocket connections).