mirror of
https://github.com/vector-im/element-call.git
synced 2026-08-29 21:15:19 +00:00
This is the mode in which we sent membership events with the 'oldest membership' transport selection algorithm, which stopped being the default back in version 0.21.0. Users will no longer be able to select this mode in developer settings, and admins will no longer be able to select legacy mode through the config either. The app will still continue to support *receiving* membership events with the 'oldest membership' transport selection algorithm from others, however.
49 lines
2.0 KiB
Markdown
49 lines
2.0 KiB
Markdown
# MatrixRTC modes
|
|
|
|
Element Call is in the middle of a transition of how a call session is
|
|
represented: from room _state_ events (`org.matrix.msc3401.call.member`) to
|
|
_sticky_ events
|
|
([MSC4354](https://github.com/matrix-org/matrix-spec-proposals/pull/4354)),
|
|
which are a much better fit for the short lived, per-device nature of call
|
|
memberships.
|
|
|
|
Not every homeserver supports sticky events yet. The two MatrixRTC modes
|
|
controls whether Element Call uses them.
|
|
|
|
## The modes
|
|
|
|
| Mode | Membership events | SFU selection | JWT endpoint |
|
|
| --------------- | ----------------- | ------------- | ---------------------------- |
|
|
| `compatibility` | state events | multi SFU | legacy |
|
|
| `matrix_2_0` | sticky events | multi SFU | Matrix 2.0 (hashed identity) |
|
|
|
|
**`compatibility`** — multi SFU, but still state events. Use it when the
|
|
homeserver does not support sticky events. This is the default.
|
|
|
|
**`matrix_2_0`** — the target state. Requires a homeserver that advertises
|
|
MSC4354 and all clients on v0.17.0 or later. The local membership requests its
|
|
token from the Matrix 2.0 JWT endpoint of the
|
|
[MatrixRTC Authorization Service](https://github.com/element-hq/lk-jwt-service)
|
|
and identifies the room by a hashed identity instead of a `livekit_alias`.
|
|
(Remote memberships always try the new endpoint first and fall back to the
|
|
legacy one, so remote participants can be on either.)
|
|
|
|
## Selecting a mode
|
|
|
|
Users can choose a mode under **Settings → Developer → MatrixRTC mode**. The
|
|
Matrix 2.0 option is disabled if the homeserver does not support sticky events.
|
|
|
|
A deployment can pin the mode for all its clients in `config.json`, which
|
|
disables the Developer Settings choice:
|
|
|
|
```json
|
|
{
|
|
"matrix_rtc_mode": "compatibility"
|
|
}
|
|
```
|
|
|
|
Valid values are `compatibility` and `matrix_2_0`; an invalid value is
|
|
ignored (with a warning) and the user's choice applies. Pinning `matrix_2_0` on a
|
|
homeserver without sticky event support makes joining fail with a "sticky events
|
|
required" error.
|