scalesocket 0.1.5

A websocket server and autoscaler
scalesocket-0.1.5 is not a library.

ScaleSocket

Build status Crates.io

ScaleSocket is a websocket server and autoscaler. It's a simple way to build multiplayer backends.

High level architecture diagram on ScaleSocket usage

About

ScaleSocket lets you to wrap a script or binary, and serve it over websockets. Clients then connect to rooms at wss://example.com/exampleroom. Connecting to a room spawns a new process of the wrapped binary. Subsequent connections to the same room share the process.

Documentation

For full details and installation instructions, see the documentation.

Features

  • Share a backend process between websocket clients
  • Proxy websocket traffic to normal TCP socket or stdio
  • Route server messages to specific clients
  • Serve static files
  • Expose CGI environment variables to backend process
  • OpenMetrics compatible

Quick Start

Create the file example.sh with the follow content:

#!/bin/bash
echo '{"message": "hello world"}'
sleep 1
echo '{"message": "goodbye"}'
sleep 1

Make it executable:

$ chmod u+x example.sh

Wrap it by starting the ScaleSocket server:

$ scalesocket ./example.sh

Then connect to the websocket endpoint, for example using curl:

$ curl --include \
       --no-buffer \
       --http1.1 \
       --header "Connection: Upgrade" \
       --header "Upgrade: websocket" \
       --header "Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==" \
       --header "Sec-WebSocket-Version: 13" \
       http://localhost:9000/exampleroom
�{"message": "hello world"}�{"message": "goodbye"}%

For more advanced usage and features, see usage.