remove the m.prefix from fields.

toger5/matrixRTC
Timo 2 weeks ago
parent 8c1340a692
commit 8c800a634f

@ -47,8 +47,10 @@ A complete `m.rtc.member` state event looks like this:
// event type: m.rtc.member
// event key: ["@user:matrix.domain", "DEVICEID"]
{
"m.application": "m.my_session_type",
"m.call_id": "",
"application": "m.my_session_type",
"call_id": "",
"device_id": "DEVICEID",
"created_ts": Time | undefined,
"focus_active": {...FOCUS_A},
"foci_preferred": [
{...FOCUS_1},
@ -69,16 +71,24 @@ is part of an RTCSession of type `m.call` in the scope/sub-session `""` (empty
string as call id) connected over `FOCUS_A`. This is all information that is needed
for another room member to detect the running session and join it.
We include the device_id in the member content to not rely on the exact format of the state key.
In case [MSC3757](https://github.com/matrix-org/matrix-spec-proposals/pull/3757) is used it would not
be the second element of the state key array.
`created_ts` is an optional property that caches the time of creation. It is not required
for an event that, has not yet been updated, there the `origin_server_ts` is used.
Once the event gets updated the origin_server_ts needs to be copied into the `created_ts` field.
There is **no event** to represent a session. This event would include shared
information where it is not trivial to decide who has authority over it.
Instead the session is a computed value based on `m.rtc.member` events.
The list of events with the same `m.application` and `m.call_id` represent one session.
The list of events with the same `application` and `m.call_id` represent one session.
This array allows to compute fields like participant count, start time ...
Sending an empty `m.rtc.member` event represents a leave action.
Sending a well formatted `m.rtc.member` represents a join action.
Based on the value of `m.application`, the event might include additional parameters
Based on the value of `application`, the event might include additional parameters
required to provide additional session parameters.
> A thirdRoom like experience could include the information of an approximate position
@ -92,13 +102,13 @@ historic sessions need to be computed and most likely cached on the client.
Each state event can either mark a join or leave:
- join: `prev_state.m.application != current_state.m.application` &&
- join: `prev_state.application != current_state.application` &&
`prev_state.m.call_id != current_state.m.call_id` &&
`current_state.m.application != undefined`
(where an empty `m.rtc.member` event would imply `state.m.application == undefined`)
- leave: `prev_state.m.application != current_state.m.application` &&
`current_state.application != undefined`
(where an empty `m.rtc.member` event would imply `state.application == undefined`)
- leave: `prev_state.application != current_state.application` &&
`prev_state.m.call_id != current_state.m.call_id` &&
`current_state.m.application == undefined`
`current_state.application == undefined`
Based on this one can find user sessions. (The range between a join and a leave
event) of specific times.
@ -135,7 +145,7 @@ participants is explained.
Each session type might have its own specification in how the different streams
are interpreted and even what focus type to use. This makes this proposal extremely
flexible. A Jitsi conference could be added by introducing a new `m.application`
flexible. A Jitsi conference could be added by introducing a new `application`
and a new focus type and would be MatrixRTC compatible. It would not be compatible
with applications that do not use the Jitsi focus but clients would know that there
is an ongoing session of unknown type and unknown focus and could display/represent

Loading…
Cancel
Save