Skip to content

Track

Defined in: client-sdk-js/src/track/Track.ts:26

A typed wrapper over Node’s EventEmitter.

Extends EventEmitter with declare overrides so that emit, on, off, etc. are type-safe without introducing circular-reference issues that arise when using typed-emitter directly in extends clauses whose event maps reference the class itself.

Runtime behaviour is 100% EventEmitter; this class adds zero runtime code.

new Track(
kind,
source?,
mediaStreamTrack
): Track;

Defined in: client-sdk-js/src/track/Track.ts:50

TrackKind

TrackSource = TrackSource.Unknown

MediaStreamTrack

Track

TypedEmitter.constructor

protected _currentBitrate: number = 0;

Defined in: client-sdk-js/src/track/Track.ts:43


protected _isMuted: boolean = false;

Defined in: client-sdk-js/src/track/Track.ts:37


protected _mediaStreamTrack: MediaStreamTrack;

Defined in: client-sdk-js/src/track/Track.ts:31


protected _prevBytes: number = 0;

Defined in: client-sdk-js/src/track/Track.ts:47

Previous byte count from the last monitor sample.


protected _prevStatsTime: number = 0;

Defined in: client-sdk-js/src/track/Track.ts:48


addListener: <E>(event, listener) => this;

Defined in: client-sdk-js/src/utils/typedEmitter.ts:37

E extends string | number

E

E extends keyof TrackEvents ? TrackEvents[E] : (…args) => void

this

TypedEmitter.addListener


attachedElements: HTMLMediaElement[] = [];

Defined in: client-sdk-js/src/track/Track.ts:41


emit: <E>(event, ...args) => boolean;

Defined in: client-sdk-js/src/utils/typedEmitter.ts:17

E extends | Muted | Unmuted | Ended | ElementAttached | ElementDetached | AudioPlaybackStarted | AudioPlaybackFailed | VideoPlaybackStarted | VideoPlaybackFailed | VisibilityChanged | VideoDimensionsChanged | UpstreamPaused | UpstreamResumed | AudioSilenceDetected | StreamStateChanged | TimeSyncUpdate

E

…Parameters<TrackEvents[E]>

boolean

TypedEmitter.emit


kind: TrackKind;

Defined in: client-sdk-js/src/track/Track.ts:27


listenerCount: (event) => number;

Defined in: client-sdk-js/src/utils/typedEmitter.ts:57

string | number

number

TypedEmitter.listenerCount


listeners: <E>(event) => E extends keyof TrackEvents ? TrackEvents[E][] : ((...args) => void)[];

Defined in: client-sdk-js/src/utils/typedEmitter.ts:49

E extends string | number

E

E extends keyof TrackEvents ? TrackEvents[E][] : ((…args) => void)[]

TypedEmitter.listeners


protected monitorInterval?: number;

Defined in: client-sdk-js/src/track/Track.ts:44


off: <E>(event, listener) => this;

Defined in: client-sdk-js/src/utils/typedEmitter.ts:32

E extends string | number

E

E extends keyof TrackEvents ? TrackEvents[E] : (…args) => void

this

TypedEmitter.off


on: <E>(event, listener) => this;

Defined in: client-sdk-js/src/utils/typedEmitter.ts:22

E extends string | number

E

E extends keyof TrackEvents ? TrackEvents[E] : (…args) => void

this

TypedEmitter.on


once: <E>(event, listener) => this;

Defined in: client-sdk-js/src/utils/typedEmitter.ts:27

E extends string | number

E

E extends keyof TrackEvents ? TrackEvents[E] : (…args) => void

this

TypedEmitter.once


rawListeners: <E>(event) => E extends keyof TrackEvents ? TrackEvents[E][] : ((...args) => void)[];

Defined in: client-sdk-js/src/utils/typedEmitter.ts:53

E extends string | number

E

E extends keyof TrackEvents ? TrackEvents[E][] : ((…args) => void)[]

TypedEmitter.rawListeners


removeAllListeners: (event?) => this;

Defined in: client-sdk-js/src/utils/typedEmitter.ts:47

string | number

this

TypedEmitter.removeAllListeners


removeListener: <E>(event, listener) => this;

Defined in: client-sdk-js/src/utils/typedEmitter.ts:42

E extends string | number

E

E extends keyof TrackEvents ? TrackEvents[E] : (…args) => void

this

TypedEmitter.removeListener


sid?: string;

Defined in: client-sdk-js/src/track/Track.ts:29


source: TrackSource;

Defined in: client-sdk-js/src/track/Track.ts:28


static defaultMaxListeners: number;

Defined in: client-sdk-js/node_modules/.pnpm/@types+events@3.0.3/node_modules/@types/events/index.d.ts:5

TypedEmitter.defaultMaxListeners

get currentBitrate(): number;

Defined in: client-sdk-js/src/track/Track.ts:77

Current bitrate in bits per second, updated by the monitor.

number


get abstract isLocal(): boolean;

Defined in: client-sdk-js/src/track/Track.ts:81

boolean


get isMuted(): boolean;

Defined in: client-sdk-js/src/track/Track.ts:88

Whether the track is currently muted. This reflects the publisher’s intent and is independent of consumer pause state or streamState.

boolean


get mediaStreamTrack(): MediaStreamTrack;

Defined in: client-sdk-js/src/track/Track.ts:33

MediaStreamTrack


get streamState(): StreamState;

Defined in: client-sdk-js/src/track/Track.ts:98

The current stream state of the track. StreamState.Active means the server is actively forwarding media; StreamState.Paused means the server has temporarily stopped forwarding (e.g. bandwidth limits). This is separate from isMuted, which reflects the publisher’s intent.

StreamState

attach(element?): HTMLMediaElement;

Defined in: client-sdk-js/src/track/Track.ts:156

HTMLMediaElement

HTMLMediaElement


detach(element?): HTMLMediaElement[];

Defined in: client-sdk-js/src/track/Track.ts:199

HTMLMediaElement

HTMLMediaElement[]


protected detachEndedListener(track): void;

Defined in: client-sdk-js/src/track/Track.ts:72

Detach the base-class ‘ended’ listener from the given track.

MediaStreamTrack

void


eventNames(): (string | number)[];

Defined in: client-sdk-js/node_modules/.pnpm/@types+events@3.0.3/node_modules/@types/events/index.d.ts:7

(string | number)[]

TypedEmitter.eventNames


getMaxListeners(): number;

Defined in: client-sdk-js/node_modules/.pnpm/@types+events@3.0.3/node_modules/@types/events/index.d.ts:9

number

TypedEmitter.getMaxListeners


protected monitorStats(
getStats,
reportType,
bytesField
): Promise<void>;

Defined in: client-sdk-js/src/track/Track.ts:130

Samples RTP bytes from a stats report and updates currentBitrate. Shared by local (producer/outbound) and remote (consumer/inbound) tracks: they only differ in which report type and byte field to read.

() => Promise<RTCStatsReport> | undefined

returns the underlying transport/producer/consumer stats, or undefined when the source is already closed.

string

the RTC stats report type to aggregate (e.g. outbound-rtp).

string

the byte field name on that report (e.g. bytesSent).

Promise<void>


protected onEnded(): void;

Defined in: client-sdk-js/src/track/Track.ts:67

Hook fired when the underlying MediaStreamTrack ends.

void


protected onEndedListener(): void;

Defined in: client-sdk-js/src/track/Track.ts:62

void


prependListener(type, listener): this;

Defined in: client-sdk-js/node_modules/.pnpm/@types+events@3.0.3/node_modules/@types/events/index.d.ts:14

string | number

Listener

this

TypedEmitter.prependListener


prependOnceListener(type, listener): this;

Defined in: client-sdk-js/node_modules/.pnpm/@types+events@3.0.3/node_modules/@types/events/index.d.ts:15

string | number

Listener

this

TypedEmitter.prependOnceListener


setMaxListeners(n): this;

Defined in: client-sdk-js/node_modules/.pnpm/@types+events@3.0.3/node_modules/@types/events/index.d.ts:8

number

this

TypedEmitter.setMaxListeners


stop(): void;

Defined in: client-sdk-js/src/track/Track.ts:233

void


static listenerCount(emitter, type): number;

Defined in: client-sdk-js/node_modules/.pnpm/@types+events@3.0.3/node_modules/@types/events/index.d.ts:4

EventEmitter

string | number

number

TypedEmitter.listenerCount