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 full)

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

  • Synchronously calls each of the listeners registered for the event named event, in the order they were registered, passing the supplied arguments to each.

    Type Parameters

    Parameters

    Returns boolean

    true if the event had listeners, false otherwise.

  • Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments to each.

    Returns true if the event had listeners, false otherwise.

    import EventEmitter from 'node:events';
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener

    Type Parameters

    Parameters

    Returns boolean

    v0.1.26

  • 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

  • Configure this call from a hangup or reject event. Used by MatrixClient.

    Parameters

    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

  • Adds the listener function to the end of the listeners array for the event named event.

    No checks are made to see if the listener has already been added. Multiple calls passing the same combination of event and listener will result in the listener being added, and called, multiple times.

    By default, event listeners are invoked in the order they are added. The prependListener method can be used as an alternative to add the event listener to the beginning of the listeners array.

    Type Parameters

    Parameters

    Returns this

    a reference to the EventEmitter, so that calls can be chained.

  • Adds a one-time listener function for the event named event. The next time event is triggered, this listener is removed and then invoked.

    Returns a reference to the EventEmitter, so that calls can be chained.

    By default, event listeners are invoked in the order they are added. The prependOnceListener method can be used as an alternative to add the event listener to the beginning of the listeners array.

    Type Parameters

    Parameters

    Returns this

    a reference to the EventEmitter, so that calls can be chained.

  • 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.

  • Adds the listener function to the beginning of the listeners array for the event named event.

    No checks are made to see if the listener has already been added. Multiple calls passing the same combination of event and listener will result in the listener being added, and called, multiple times.

    Type Parameters

    Parameters

    Returns this

    a reference to the EventEmitter, so that calls can be chained.

  • 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 all listeners, or those of the specified event.

    It is bad practice to remove listeners added elsewhere in the code, particularly when the EventEmitter instance was created by some other component or module (e.g. sockets or file streams).

    Parameters

    Returns this

    a reference to the EventEmitter, so that calls can be chained.

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

    Parameters

    Returns void

  • Replace this call with a new call, e.g. for glare resolution. Used by MatrixClient.

    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

  • Starts/stops screensharing

    Parameters

    • enabled: boolean

      the desired screensharing state

    • Optionalopts: IScreensharingOpts

      screen sharing options

    Returns Promise<boolean>

    new screensharing 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>