redis-broker

Web-socket server that connects a web browser to redis

Usage no npm install needed!

<script type="module">
  import redisBroker from 'https://cdn.skypack.dev/redis-broker';
</script>

README

redis-broker

npm version jest dependencies devDependencies License: MIT

Simple web-socket server that connects any web browser to redis. Web browsers can issue any redis command and also subscribe to any channel. All the messages exchanged between the web browser and the web-socket server are in JSON format.

Installation

sudo yum -y install redis
npm install redis-broker

Usage

$ npx redis-broker -h
usage: redis-broker [options]

options:
  -p --port    web-socket server port [3500]
  -a --auth    redis authorization string
  -b --batchMs batch building interval in ms [100]
  -s --silent  suppress log messages from output
  -U --utc     use UTC time format in log messages
  -d --debug   print debug messages
  -v --verbose print more detailed messages

  -h --help    print this list and exit

Example

Start a websocket server:

$ npx redis-broker
Starting up redis-broker, serving port 3500
Hit CTRL-C to stop the server

Start a websocket server when redis requires authentication:

$ npx redis-broker -a password
Starting up redis-broker, serving port 3500
Hit CTRL-C to stop the server

Open a console in a browser and create a client socket:

var socket = new WebSocket("ws://localhost:3500");

socket.onopen = function(event) {
    console.log("Connected to: " + event.currentTarget.url);
};

socket.onerror = function(error) {
    console.log("Websocket error: " + error);
};

socket.onmessage = function(event) {
    console.log(JSON.stringify(JSON.parse(event.data), undefined, 4));
};

socket.onclose = function(error) {
    console.log("Disconnected from websocket");
};

Send the command "KEYS *" in a JSON format to Redis:

socket.send('{"tag": "1", "cmd": "keys", "args": ["*"]}')

{
    "tag": "1",
    "status": "ok",
    "result": [
        "key1",
        "key2",
        "key3"
    ],
    "command": {"tag": "1", "cmd": "keys", "args": ["*TXN*"]}
}

Development

Setup:

git clone https://github.com/chaserjs/redis-broker.git
cd redis-broker
npm install

Build:

npm run build

Test:

npm test

Lint, Build, Test, and Clean:

npm run all

Update Dependencies:

npm update --save

License

MIT