Typed Event Emitter class which can act as a Base Model for all our model and communication events. This makes it much easier for us to distinguish between events, as we now need to properly type this, so that our events are not stringly-based and prone to silly typos.

Type parameters:

  • Events - List of all events emitted by this TypedEventEmitter. Normally an enum type.
  • Arguments - A ListenerMap type providing mappings from event names to listener types.
  • SuperclassArguments - TODO: not really sure. Alternative listener mappings, I think? But only honoured for .emit?

Hierarchy (View Summary)

Constructors

Properties

Accessors

Methods

Constructors

Properties

callId: string
direction?: CallDirection
groupCallId?: string
hangupParty?: CallParty
hangupReason?: string
invitee?: string
isPtt: boolean = false
ourPartyId: string
roomId: string
toDeviceSeq: number = 0

Accessors

Methods

  • Create a datachannel using this call's peer connection.

    Parameters

    • label: string

      A human readable label for this datachannel

    • options: undefined | RTCDataChannelInit

      An object providing configuration options for the data channel.

    Returns RTCDataChannel

  • Hangup a call.

    Parameters

    • reason: CallErrorCode

      The reason why the call is being hung up.

    • suppressEvent: boolean

      True to suppress emitting an event.

    Returns void

  • Indicates whether we are 'on hold' to the remote party (ie. if true, they cannot hear us).

    Returns boolean

    true if the other party has put us on hold

  • Check if local video is muted.

    If there are multiple video tracks, all of the tracks need to be muted for this to return true. This means if there are no video tracks, this will return true.

    Returns boolean

    True if the local preview video is muted, else false (including if the call is not set up yet).

  • Check if the microphone is muted.

    If there are multiple audio tracks, all of the tracks need to be muted for this to return true. This means if there are no audio tracks, this will return true.

    Returns boolean

    True if the mic is muted, else false (including if the call is not set up yet).

  • Returns boolean

    true if we have put the party on the other side of the call on hold (that is, we are signalling to them that we are not listening)

  • If there is a screensharing stream returns true, otherwise returns false

    Returns boolean

    is screensharing

  • Returns true if there are no incoming feeds, otherwise returns false

    Returns boolean

    no incoming feeds

  • Returns true if this.remoteSDPStreamMetadata is defined, otherwise returns false

    Returns boolean

    can screenshare

  • Place a call to this room.

    Parameters

    • audio: boolean
    • video: boolean

    Returns Promise<void>

    if you have not specified a listener for 'error' events.

    if have passed audio=false.

  • Place a call to this room with call feed.

    Parameters

    • callFeeds: CallFeed[]

      to use

    • requestScreenshareFeed: boolean = false

    Returns Promise<void>

    if you have not specified a listener for 'error' events.

    if have passed audio=false.

  • Place a video call to this room.

    Returns Promise<void>

    If you have not specified a listener for 'error' events.

  • Place a voice call to this room.

    Returns Promise<void>

    If you have not specified a listener for 'error' events.

  • Pushes supplied feed to the call

    Parameters

    • callFeed: CallFeed

      to push

    • addToPeerConnection: boolean = true

      whether to add the tracks to the peer connection

    Returns void

  • Reject a call This used to be done by calling hangup, but is a separate method and protocol event as of MSC2746.

    Returns void

  • Removes local call feed from the call and its tracks from the peer connection

    Parameters

    Returns void

  • Sends a DTMF digit to the other party

    Parameters

    • digit: string

      The digit (nb. string - '#' and '*' are dtmf too)

    Returns void

  • Set whether our outbound video should be muted or not.

    Parameters

    • muted: boolean

      True to mute the outbound video.

    Returns Promise<boolean>

    the new mute state

  • Set whether the microphone should be muted or not.

    Parameters

    • muted: boolean

      True to mute the mic.

    Returns Promise<boolean>

    the new mute state

  • Replaces/adds the tracks from the passed stream to the localUsermediaStream

    Parameters

    • stream: MediaStream

      to use a replacement for the local usermedia stream

    • forceAudio: boolean = false
    • forceVideo: boolean = false

    Returns Promise<void>