Update MatrixRTC implementation - #1029
Conversation
🦋 Changeset detectedLatest commit: e6a94bd The changes in this PR will be included in the next version bump. This PR includes changesets to release 2 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Signed-off-by: Mikhail Aheichyk <mikhail.aheichyk@nordeck.net>
4b8a534 to
b58b914
Compare
Signed-off-by: Mikhail Aheichyk <mikhail.aheichyk@nordeck.net>
d2b791a to
a262c9c
Compare
mgcm
left a comment
There was a problem hiding this comment.
This is not a full review, just my first pass at it. Let's discuss it tomorrow.
| | `status` | `'open'` | A slot's status. | | ||
| | `application.type` | `net.nordeck.whiteboard` | Nordeck whiteboard application identifier. | |
There was a problem hiding this comment.
We are mixing type and values here. For example, status can be open or closed and the application type is a string following the CNIG.
| | `status` | `'open'` | A slot's status. | | |
| | `application.type` | `net.nordeck.whiteboard` | Nordeck whiteboard application identifier. | | |
| | `status` | `string` | A slot's status, either 'open' or 'closed'. | | |
| | `application.type` | `string` | Nordeck whiteboard application identifier: `net.nordeck.whiteboard` | |
| | --------------------------- | -------------------------- | ------------------------------------------------------------------------------- | | ||
| | `slot_id` | `string` | A MatrixRTC slot ID, example: `net.nordeck.whiteboard#whiteboard-id` | | ||
| | `member.id` | `string` | A unique user identifier for each join, even for the same user and device. | | ||
| | `member.membership` | `'join'` | Identifies membership event as `join`. | |
There was a problem hiding this comment.
Also mixing types and values here and I understand why you are doing it - still, I think this is not correct as is.
|
|
||
| ## Room Messages | ||
| We replace the `net.nordeck.whiteboard.sessions` state event with the | ||
| MatrixRTC `m.rtc.member` membership **sticky** event (or the unstable `org.matrix.msc4143.rtc.member`). |
There was a problem hiding this comment.
A link to the sticky events MSC would be helpful here, no?
| } | ||
|
|
||
| // check for specific livekit backend config underride | ||
| const envFoci = getEnvironment('REACT_APP_RTC_LIVEKIT_SERVICE_URL'); |
There was a problem hiding this comment.
if we are not using this anymore, then we need to remove the option from configuration.md
| and no longer need to use To Device Messages for establishing peer connections, | ||
| as all signaling and connection logic is now handled by the LiveKit Client SDK | ||
| and LiveKit Server backend. | ||
| We replace the `net.nordeck.whiteboard` state event with the MatrixRTC `m.rtc.slot` state event |
There was a problem hiding this comment.
Why? Aren't these two separate concepts?
One is indicating this room has whiteboard data in it which can be used by the standalone app or the widget, and the other is enabling realtime collaboration (which can be disabled, if the slot is closed).
I haven't checked yet the full PR but this has data migration implications.
There was a problem hiding this comment.
A very good question.
I somehow thought that would be useful and migration shouldn't be an issue and I addressed the PR to handle that. However I got other issues in standalone because of this decision.
I agree, that should be separated, that makes sense and makes everything much easier and consistent 👍
I have update PR to revert whiteboard to slot changes and add slot sending separately.
| .items(Joi.string().valid('livekit')) | ||
| .length(1) |
There was a problem hiding this comment.
seems a bit harsh to force this here? I know the existence of other transports is academic but if we are this strict here, why not also on the transport schema?
8b7f4e8 to
a262c9c
Compare
Co-authored-by: Milton Moura <miltonmoura@gmail.com> Signed-off-by: maheichyk <mikhail.aheichyk@gmail.com>
…s created in MatrixRTC mode. Signed-off-by: Mikhail Aheichyk <mikhail.aheichyk@nordeck.net>
Co-authored-by: Milton Moura <miltonmoura@gmail.com> Signed-off-by: maheichyk <mikhail.aheichyk@gmail.com>
Co-authored-by: Milton Moura <miltonmoura@gmail.com> Signed-off-by: maheichyk <mikhail.aheichyk@gmail.com>
Signed-off-by: Mikhail Aheichyk <mikhail.aheichyk@nordeck.net>
Update MatrixRTC implementation to follow the latest MSC4143, MSC4354, MSC4195 changes, summary:
Use
org.matrix.msc4143.rtc.slotstate event with anapplication.typeofnet.nordeck.whiteboard.Use
org.matrix.msc4143.rtc.membersticky event to store membership. It replaces theorg.matrix.msc3401.call.memberstate event.Adapt the existing usage of delayed events to update membership.
Update to use LiveKit backend according to MSC4195. Including support for multi-SFU mode.
Session identity is changed to pseudonymous identity described in MSC4195. See
matrixRtcParticipantIdentity.ts.Depends on Matrix Widget Toolkit PRs:
✔️ Checklist
Signed-off-byline in the message (more info).