wspush

command module
v1.6.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 14, 2023 License: MIT Imports: 23 Imported by: 0

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).

Documentation

Overview

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 a WSPUSH_KEY environment variable.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL