Document signaling runtime structure

This commit is contained in:
ghost 2025-10-30 19:12:27 +01:00
parent ffad23446a
commit beb2be6622
3 changed files with 52 additions and 0 deletions

View File

@ -0,0 +1,18 @@
# Runtime Loop & Message Flow
## Überblick
- Server basiert auf `actix-web` und `actix-ws`.
- Jeder WebSocket-Client erhält eine Session über `actix_ws::handle`.
- `broadcast::channel` (Tokio) fungiert als zentrales Publish/Subscribe-Relay.
## Ablauf Heute
1. **Handshake**: `/ws` Route akzeptiert WebSocket-Requests.
2. **Incoming Task**: Liest Nachrichten vom Client, deserialisiert `SignalingMessage` und sendet sie in den Broadcast-Kanal.
3. **Outgoing Task**: Abonniert Broadcast (`rx.recv()`) und schreibt jede Nachricht zurück in die Session.
4. **Routing**: Aktuell kein Filter alle Clients erhalten jede Nachricht.
## Erweiterungsplan
- **Channel/Room Map**: `HashMap<RoomId, Sender>` oder dedizierter Actor für jede Session.
- **Presence Tracking**: Join/Leave Events, Heartbeats.
- **Message Typen**: Offer/Answer/Candidate/Text/Broadcast sollen im Proto beschrieben werden.
- **Persistente Logs**: Structured Logging via `tracing` mit Session-ID.

View File

@ -0,0 +1,23 @@
# Server-Konfiguration
## Dateien
- `appsettings.example.json`: Vorlage mit `bind` Adresse.
- `appsettings.json`: Produktiveinstellung (wird beim Start geladen).
## Struktur
```
Config {
server: ServerOptions {
bind: String,
}
}
```
## Defaults (siehe `constants.rs`)
- `DEFAULT_BIND = "127.0.0.1:3478"`
- `DEFAULT_HOST_URL = "http://localhost:3478"`
## TODOs
- Unterschiedliche Ports für HTTP vs WS (derzeit identisch).
- TLS-/WSS-Unterstützung.
- Konfigurierbare Allowed Origins, TURN Secrets.

11
docs/index.md Normal file
View File

@ -0,0 +1,11 @@
# niom-signaling Docs
Kurzdokumentation für den Signaling-Server. Struktur orientiert sich an den Hauptkomponenten (`src/main.rs`, `config`, `constants`).
- [`architecture/runtime_loop.md`](architecture/runtime_loop.md) Verbindungshandling & Broadcast.
- [`config/server_config.md`](config/server_config.md) Bind-Adressen und Defaults.
## Zielsetzung
- Rooms/Channels anstelle globalem Broadcast.
- Authentifizierung & Health-Checks.
- Testbare, deterministische Nachrichtenzustellung.