It holds a room's authority and clock keys (a 0600 file outside every repository). POST /grant signs a short-lived WRG1 grant for a key a page made, a publisher's or a viewer's, bounded per client and per room; the relay honours it only beside the key's proof (live-rooms §10.5). The clock's session on the relay watches each publisher's video track and signs join, publish and leave on its events track (§7.2, live-events §8.1); GET /room serves the signed descriptor, the composition descriptor and the grants. A new room starts when the last publisher has left. A workspace of its own: it builds on wai-rs, whose serde_json features would otherwise reach every crate of the joule-code workspace. Co-Authored-By: Claude Opus 5.5 <[email protected]>
32 lines
1.2 KiB
TOML
32 lines
1.2 KiB
TOML
# joule-moq-room: an example configuration. Nothing secret belongs here: the keys are a
|
|
# file of their own (`joule-moq-room keygen <path>` makes it, mode 0600), outside every
|
|
# repository, and the relay knows the clock's token by its SHA-256 alone.
|
|
|
|
# The HTTP service, on loopback behind the front that serves the room's page.
|
|
listen = "127.0.0.1:9682"
|
|
keys = "/path/to/keys.toml"
|
|
# The relay's WebSocket endpoint, for the clock's own session (loopback).
|
|
relay_url = "ws://127.0.0.1:9681/moq"
|
|
# Exit with status 70 past this resident memory (MiB), for the supervisor to restart it.
|
|
max_resident_mb = 256
|
|
|
|
[room]
|
|
# Publishers at once, those whose grants are still waited for among them; the composition
|
|
# lays out this many tiles.
|
|
max_publishers = 4
|
|
max_present = 16
|
|
# A grant's life, in seconds.
|
|
publisher_grant_s = 1200
|
|
viewer_grant_s = 1800
|
|
# How long a publisher's grant holds its place before its tracks appear.
|
|
join_wait_s = 90
|
|
# Grants one room takes; then a new room starts once it is empty.
|
|
max_grants = 64
|
|
|
|
[rate]
|
|
# Grants per client address: this many at once, then one more every this many seconds.
|
|
client_burst = 6
|
|
client_every_s = 20
|
|
# And for everyone together.
|
|
global_burst = 120
|
|
global_every_s = 10
|