matrix-js-sdk

    Class MatrixRTCSession

    A MatrixRTCSession manages the membership & properties of a MatrixRTC session. This class doesn't deal with media at all, just membership & properties of a session.

    Hierarchy (View Summary, Expand)

    Index

    Constructors

    • This constructs a room session. When using MatrixRTC inside the js-sdk this is expected to be used with the MatrixRTCSessionManager exclusively.

      In cases where you don't use the js-sdk but build on top of another Matrix stack this class can be used standalone to manage a joined MatrixRTC session.

      Parameters

      • client: Pick<
            MatrixClient,
            | "getUserId"
            | "getDeviceId"
            | "sendEvent"
            | "sendStateEvent"
            | "_unstable_sendDelayedStateEvent"
            | "_unstable_updateDelayedEvent"
            | "_unstable_sendStickyEvent"
            | "_unstable_sendStickyDelayedEvent"
            | "cancelPendingEvent"
            | "encryptAndSendToDevice"
            | "off"
            | "on"
            | "decryptEventIfNeeded",
        >

        A subset of the MatrixClient that lets the session interact with the Matrix room.

      • roomSubset: Pick<
            Room,
            | "getLiveTimeline"
            | "roomId"
            | "getVersion"
            | "hasMembershipState"
            | "on"
            | "off",
        >

        The room this session is attached to. A subset of a js-sdk Room that the session needs.

      • memberships: CallMembership[]

        The list of memberships this session currently has.

      • slotDescription: SlotDescription

        The slot description is a virtual address where participants are allowed to meet. This session will only manage memberships that match this slot description. Sessions are distinct if any of those properties are distinct: roomSubset.roomId, slotDescription.application, slotDescription.id.

      Returns MatrixRTCSession

    Properties

    memberships: CallMembership[]

    The list of memberships this session currently has.

    slotDescription: SlotDescription

    The slot description is a virtual address where participants are allowed to meet. This session will only manage memberships that match this slot description. Sessions are distinct if any of those properties are distinct: roomSubset.roomId, slotDescription.application, slotDescription.id.

    statistics: Statistics = ...

    The statistics for this session.

    Accessors

    • get callId(): undefined | string

      The callId (sessionId) of the call.

      It can be undefined since the callId is only known once the first membership joins. The callId is the property that, per definition, groups memberships into one call.

      Returns undefined | string

      use slotId instead.

    • get room(): Room

      WARN: this can in theory only be a subset of the room with the properties required by this class. Outside of tests this most likely will be a full room, however.

      Returns Room

      Relying on a full Room object being available here is an anti-pattern. You should be tracking the room object in your own code and passing it in when needed.

    • get slotId(): undefined | string

      The slotId of the call. {application}#{appSpecificId} It can be undefined since the slotId is only known once the first membership joins. The slotId is the property that, per definition, groups memberships into one call.

      Returns undefined | string

    Methods

    • The used focusActive of the oldest membership (to find out the selection type multi-sfu or oldest membership active focus)

      Returns undefined | Transport

      does not work with m.rtc.member. Do not rely on it.

    • Get the call intent for the current call, based on what members are advertising. If one or more members disagree on the current call intent, or nobody specifies one then undefined is returned.

      If all members that specify a call intent agree, that value is returned.

      Returns undefined | string

      A call intent, or undefined if no consensus or not given.

    • This returns the focus in use by the oldest membership. Do not use since this might be just the focus for the oldest membership. others might use a different focus.

      Returns undefined | Transport

      use member.getTransport(session.getOldestMembership()) instead for the specific member you want to get the focus for.

    • Announces this user and device as joined to the MatrixRTC session, and continues to update the membership event to keep it valid until leaveRoomSession() is called This will not subscribe to updates: remember to call subscribe() separately if desired. This method will return immediately and the session will be joined in the background.

      Parameters

      • fociPreferred: Transport[]

        the list of preferred foci to use in the joined RTC membership event. If multiSfuFocus is set, this is only needed if this client wants to publish to multiple transports simultaneously.

      • OptionalmultiSfuFocus: Transport

        the active focus to use in the joined RTC membership event. Setting this implies the membership manager will operate in a multi-SFU connection mode. If undefined, an oldest_membership transport selection will be used instead.

      • OptionaljoinConfig: JoinSessionConfig

        Additional configuration for the joined session.

      Returns void

    • Announces this user and device as having left the MatrixRTC session and stops scheduled updates. This will not unsubscribe from updates: remember to call unsubscribe() separately if desired. The membership update required to leave the session will retry if it fails. Without network connection the promise will never resolve. A timeout can be provided so that there is a guarantee for the promise to resolve.

      Parameters

      • timeout: undefined | number = undefined

      Returns Promise<boolean>

      Whether the membership update was attempted and did not time out.

    • Call this when something changed that may impacts the current MatrixRTC members in this session.

      Returns void

    • Re-emit an EncryptionKeyChanged event for each tracked encryption key. This can be used to export the keys.

      Returns void

    • Returns all the call memberships for a room that match the provided sessionDescription, oldest first.

      Parameters

      • room: Pick<
            Room,
            | "getLiveTimeline"
            | "roomId"
            | "hasMembershipState"
            | "_unstable_getStickyEvents",
        >

      Returns CallMembership[]

      Use MatrixRTCSession.sessionMembershipsForSlot instead.

    • Parameters

      • room: Pick<
            Room,
            | "getLiveTimeline"
            | "roomId"
            | "hasMembershipState"
            | "_unstable_getStickyEvents",
        >
      • sessionDescription: SlotDescription

      Returns CallMembership[]

      use MatrixRTCSession.slotMembershipsForRoom instead.

    MMNEPVFCICPMFPCPTTAAATR