Optional
config: Config<EndpointMetadata, TrackMetadata>Private
bandwidthPrivate
commandPrivate
commandsPrivate
Optional
connectionPrivate
disabledPrivate
Readonly
endpointPrivate
idPrivate
localPrivate
localPrivate
midPrivate
ongoingIndicates if an ongoing renegotiation is active. During renegotiation, both parties are expected to actively exchange events: renegotiateTracks, offerData, sdpOffer, sdpAnswer.
Private
ongoingPrivate
rtcPrivate
trackPrivate
trackPrivate
Readonly
trackPrivate
addAdds track that will be sent to the RTC Engine.
Audio or video track e.g. from your microphone or camera.
Optional
trackMetadata: TrackMetadataAny information about this track that other endpoints will receive in WebRTCEndpointEvents.endpointAdded. E.g. this can source of the track - whether it's screensharing, webcam or some other media device.
Simulcast configuration. By default simulcast is disabled. For more information refer to SimulcastConfig.
maximal bandwidth this track can use. Defaults to 0 which is unlimited. This option has no effect for simulcast and audio tracks. For simulcast tracks use `WebRTCEndpoint.setTrackBandwidth.
Returns id of added track
let localStream: MediaStream = new MediaStream();
try {
localAudioStream = await navigator.mediaDevices.getUserMedia(
AUDIO_CONSTRAINTS
);
localAudioStream
.getTracks()
.forEach((track) => localStream.addTrack(track));
} catch (error) {
console.error("Couldn't get microphone permission:", error);
}
try {
localVideoStream = await navigator.mediaDevices.getUserMedia(
VIDEO_CONSTRAINTS
);
localVideoStream
.getTracks()
.forEach((track) => localStream.addTrack(track));
} catch (error) {
console.error("Couldn't get camera permission:", error);
}
localStream
.getTracks()
.forEach((track) => webrtc.addTrack(track, localStream));
Private
addPrivate
addPrivate
addPrivate
checkCleans up WebRTCEndpoint instance.
Tries to connect to the RTC Engine. If user is successfully connected then WebRTCEndpointEvents.connected will be emitted.
Any information that other endpoints will receive in WebRTCEndpointEvents.endpointAdded after accepting this endpoint
let webrtc = new WebRTCEndpoint();
webrtc.connect({displayName: "Bob"});
Private
createPrivate
createPrivate
createPrivate
createDisables track encoding so that it will be no longer sent to the server.
id of track
encoding that will be disabled
const trackId = webrtc.addTrack(track, stream, {}, {enabled: true, activeEncodings: ["l", "m", "h"]});
webrtc.disableTrackEncoding(trackId, "l");
Disconnects from the room. This function should be called when user disconnects from the room
in a clean way e.g. by clicking a dedicated, custom button disconnect
.
As a result there will be generated one more media event that should be
sent to the RTC Engine. Thanks to it each other endpoint will be notified
that endpoint was removed in WebRTCEndpointEvents.endpointRemoved,
Rest
...args: Parameters<Required<WebRTCEndpointEvents<EndpointMetadata, TrackMetadata>>[E]>Enables track encoding so that it will be sent to the server.
id of track
encoding that will be enabled
const trackId = webrtc.addTrack(track, stream, {}, {enabled: true, activeEncodings: ["l", "m", "h"]});
webrtc.disableTrackEncoding(trackId, "l");
// wait some time
webrtc.enableTrackEncoding(trackId, "l");
Private
erasePrivate
erasePrivate
findPrivate
getPrivate
getReturns a snapshot of currently received remote endpoints.
Returns a snapshot of currently received remote tracks.
if (webRTCEndpoint.getRemoteTracks()[trackId]?.simulcastConfig?.enabled) {
webRTCEndpoint.setTargetTrackEncoding(trackId, encoding);
}
Retrieves statistics related to the RTCPeerConnection. These statistics provide insights into the performance and status of the connection.
Optional
selector: null | MediaStreamTrackPrivate
getPrivate
getPrivate
handlePrivate
handlePrivate
mapPrivate
onPrivate
onPrivate
onPrivate
onPrivate
onPrivate
onPrivate
onPrivate
onPrivate
onPrivate
onPrivate
processPrivate
pushFeeds media event received from RTC Engine to WebRTCEndpoint. This function should be called whenever some media event from RTC Engine was received and can result in WebRTCEndpoint generating some other media events.
String data received over custom signalling layer.
This example assumes phoenix channels as signalling layer. As phoenix channels require objects, RTC Engine encapsulates binary data into map with one field that is converted to object with one field on the TS side.
webrtcChannel.on("mediaEvent", (event) => webrtc.receiveMediaEvent(event.data));
Optional
event: ERemoves a track from connection that was sent to the RTC Engine.
Id of audio or video track to remove.
// setup camera
let localStream: MediaStream = new MediaStream();
try {
localVideoStream = await navigator.mediaDevices.getUserMedia(
VIDEO_CONSTRAINTS
);
localVideoStream
.getTracks()
.forEach((track) => localStream.addTrack(track));
} catch (error) {
console.error("Couldn't get camera permission:", error);
}
let trackId
localStream
.getTracks()
.forEach((track) => trackId = webrtc.addTrack(track, localStream));
// remove track
webrtc.removeTrack(trackId)
Private
removeReplaces a track that is being sent to the RTC Engine.
Audio or video track.
Optional
newTrackMetadata: anyOptional track metadata to apply to the new track. If no track metadata is passed, the old track metadata is retained.
success
// setup camera
let localStream: MediaStream = new MediaStream();
try {
localVideoStream = await navigator.mediaDevices.getUserMedia(
VIDEO_CONSTRAINTS
);
localVideoStream
.getTracks()
.forEach((track) => localStream.addTrack(track));
} catch (error) {
console.error("Couldn't get camera permission:", error);
}
let oldTrackId;
localStream
.getTracks()
.forEach((track) => trackId = webrtc.addTrack(track, localStream));
// change camera
const oldTrack = localStream.getVideoTracks()[0];
let videoDeviceId = "abcd-1234";
navigator.mediaDevices.getUserMedia({
video: {
...(VIDEO_CONSTRAINTS as {}),
deviceId: {
exact: videoDeviceId,
},
}
})
.then((stream) => {
let videoTrack = stream.getVideoTracks()[0];
webrtc.replaceTrack(oldTrackId, videoTrack);
})
.catch((error) => {
console.error('Error switching camera', error);
})
Private
replacePrivate
resolvePrivate
sendUpdates maximum bandwidth for the given simulcast encoding of the given track.
id of the track
rid of the encoding
desired max bandwidth used by the encoding (in kbps)
Sets track variant that server should send to the client library.
The variant will be sent whenever it is available. If chosen variant is temporarily unavailable, some other variant will be sent until the chosen variant becomes active again.
id of track
variant to receive
webrtc.setTargetTrackEncoding(incomingTrackCtx.trackId, "l")
Updates maximum bandwidth for the track identified by trackId. This value directly translates to quality of the stream and, in case of video, to the amount of RTP packets being sent. In case trackId points at the simulcast track bandwidth is split between all of the variant streams proportionally to their resolution.
in kbps
success
Private
setUpdates the metadata for the current endpoint.
Data about this endpoint that other endpoints will receive upon being added.
If the metadata is different from what is already tracked in the room, the optional
event endpointUpdated
will be emitted for other endpoint in the room.
Updates the metadata for a specific track.
trackId (generated in addTrack) of audio or video track.
Data about this track that other endpoint will receive upon being added.
If the metadata is different from what is already tracked in the room, the optional
event trackUpdated
will be emitted for other endpoints in the room.
Main class that is responsible for connecting to the RTC Engine, sending and receiving media.