10000 GitHub - scalesocket/scalesocket: ScaleSocket is a collaborative websocket server and autoscaler. It serves a script or binary over websockets.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

ScaleSocket is a collaborative websocket server and autoscaler. It serves a script or binary over websockets.

License

Notifications You must be signed in to change notification settings

scalesocket/scalesocket

Repository files navigation

ScaleSocket

Build status Crates.io

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

High level architecture diagram on ScaleSocket usage

About

ScaleSocket is a command line tool that lets you to wrap a backend script or binary, and serve it collaboratively over websockets.

Clients connect to rooms (a.k.a. channels) which have a unique URL (wss://example.com/room1). Connecting to a room spawns a new backend process. Subsequent connections to the same room share the process.

The backend does not require any network code or room handling logic.

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
  • Built-in lobby server for listing rooms

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.

Alternatives and Comparison

See the comparison.

License

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.

About

ScaleSocket is a collaborative websocket server and autoscaler. It serves a script or binary over websockets.

Topics

Resources

License

Stars

Watchers

Forks

0