hero/interfaces/websocket/server/README.md
Timur Gordon 8ed40ce99c wip
2025-08-01 00:01:08 +02:00

27 lines
1.2 KiB
Markdown

# `server`: The Hero WebSocket Server
An OpenRPC WebSocket Server to interface with the [cores](../../core) of authorized circles.
- [OpenRPC Specification](openrpc.json) defines the API.
- There are RPC Operations specified to authorize a websocket connection.
- Authorized clients can manage jobs.
- The server uses the [supervisor] to dispatch [jobs] to the [workers].
## Circles
Circles are contexts which a hero can act in. Each circle has a unique public key and a set of members.
The server offers a separate path for each circle.
## Authentication
The server provides a robust authentication mechanism to ensure that only authorized clients can execute scripts. The entire flow is handled over the WebSocket connection using two dedicated JSON-RPC methods:
1. **`fetch_nonce`**: The client requests a unique, single-use nonce (a challenge) from the server.
2. **`authenticate`**: The client sends back the nonce signed with its private key. The `CircleWs` actor verifies the signature to confirm the client's identity.
For a more detailed breakdown of the authentication architecture, please see the [ARCHITECTURE.md](docs/ARCHITECTURE.md) file.
## How to Run
cargo run