8 releases
new 0.2.3 | Nov 23, 2024 |
---|---|
0.2.2 | Jan 20, 2024 |
0.2.1 | Nov 19, 2023 |
0.1.5 | Aug 9, 2023 |
0.1.2 | Nov 5, 2022 |
#2 in #backend-server
469 downloads per month
91KB
2K
SLoC
ScaleSocket
ScaleSocket is a collaborative websocket server and autoscaler. It's a simple way to build multiplayer backends.
About
ScaleSocket is a command line tool that lets you to wrap a script or binary, and serve it collaboratively over websockets. Clients then connect to rooms (a.k.a. channels) which have a unique URL (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
- 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.
License
- Apache License, Version 2.0 (LICENSE or www.apache.org)
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.
Dependencies
~11–21MB
~303K SLoC