RTCForge API Reference v1.1.1
    Preparing search index...

    Class CascadeTree

    Builds and maintains per-room cascade fan-out trees over an SfuCluster, scaling a single room's media to a very large viewer population.

    For each room it runs planCascadeTree across the cluster's active nodes, then diffs the new plan against the previous one to emit the minimal set of link create/drop events and update per-node room tracking. It watches the cluster through a NodeFailureTracker: when a node that participates in a room's tree fails or is removed, that room's tree is rebuilt automatically.

    Emits CascadeTreeEvent events. Pair with a CascadeBridge to realize the tree's links as real inter-node media pipes.

    const tree = new CascadeTree(cluster, { fanout: 8, viewersPerNode: 1000 })
    tree.on(CascadeTreeEvent.LinkCreated, (roomId, from, to) => {
    media.pipeLink(roomId, from, to)
    })

    // Scale a broadcast to one million viewers:
    const plan = tree.build('live-1', 'origin', 1_000_000)
    if (plan.unmetViewers > 0) addMoreNodes()

    tree.detach('live-1')

    Call CascadeTree.dispose to detach from cluster failure events when the tree is no longer needed.

    Hierarchy (View Summary)

    Index

    Constructors

    Methods

    • Synchronously invokes every listener registered for event, in registration order.

      Type Parameters

      • K extends keyof CascadeTreeEvents

      Parameters

      • event: K

        The event name to emit.

      • ...args: CascadeTreeEvents[K]

        The argument tuple to pass to each listener, matching Events[event].

      Returns boolean

      true if at least one listener was invoked, false if there were none.

      The listener list is snapshotted before dispatch, so mutations made by handlers take effect only on subsequent emissions. Listeners are isolated: if one throws, the remaining listeners still run and the error is surfaced via console.error rather than swallowed silently (consistent with LocalMessageBus).

    • Returns the number of listeners currently registered for event.

      Type Parameters

      • K extends keyof CascadeTreeEvents

      Parameters

      • event: K

        The event name to count listeners for.

      Returns number

      The count of registered listeners (0 if none).

    • Removes a previously registered listener for event.

      Type Parameters

      • K extends keyof CascadeTreeEvents

      Parameters

      • event: K

        The event name the listener was registered for.

      • listener: (...args: CascadeTreeEvents[K]) => void

        The exact function reference passed to on or once.

      Returns this

      This emitter, for chaining.

      If the listener is not currently registered, this is a no-op. Only the first matching registration is removed.

    • Registers a listener that is invoked every time event is emitted.

      Type Parameters

      • K extends keyof CascadeTreeEvents

      Parameters

      • event: K

        The event name to listen for.

      • listener: (...args: CascadeTreeEvents[K]) => void

        Callback invoked with the event's argument tuple.

      Returns this

      This emitter, for chaining.

    • Registers a listener that is invoked at most once: it is removed automatically before being called the first time event is emitted.

      Type Parameters

      • K extends keyof CascadeTreeEvents

      Parameters

      • event: K

        The event name to listen for.

      • listener: (...args: CascadeTreeEvents[K]) => void

        Callback invoked with the event's argument tuple on the next emission.

      Returns this

      This emitter, for chaining.

      Remove a pending one-time listener by passing the same function reference to off.

    • Removes listeners for a single event, or for all events.

      Parameters

      • Optionalevent: keyof CascadeTreeEvents

        The event name to clear; if omitted, listeners for every event are removed.

      Returns this

      This emitter, for chaining.