Skip to content

Bandwidth/javascript-brtc-sdk

Repository files navigation

BandwidthRTC Node SDK Documentation

Initialize the BandwidthRTC Node SDK

import BandwidthRtc from "bandwidth-rtc";

const bandwidthRtc = new BandwidthRtc();

API Methods

connect

  • Params:
    • authParams: the device token to connect with
    • options: optional SDK settings (can be omitted)
      • websocketUrl: override the default Bandwidth RTC connection url (this should not generally be needed)
  • Description: connect device to the Bandwidth RTC platform
await bandwidthRtc.connect({
  deviceToken: deviceToken,
});

publish

  • Params:
    • input: the input to publish; this can be an instance of:
      • mediaStream: An already existing media stream such as a screen share
        • Type: MediaStream
  • Return:
    • rtcStream: a media stream with the supplied media stream constraints
      • Type: RtcStream
  • Description: publish media

Publish with default settings:

let rtcStream: RtcStream = await bandwidthRtc.publish();

Publish audio only

Publish with customized constraints

const mediaConstraints: MediaStreamConstraints = {
  audio: {
    autoGainControl: true,
    channelCount: 1,
    deviceId: "default",
    echoCancellation: true,
    latency: 0.01,
    noiseSuppression: true,
    sampleRate: 48000,
    sampleSize: 16,
  }
};
let microphoneStream = await navigator.mediaDevices.getUserMedia(mediaConstraints);
let sourceNode = audioContext.createMediaStreamSource(microphoneStream);
let rtcStream: RtcStream = await bandwidthRtc.publish(mediaConstraints);

Publish with existing media stream

let screenShare = await navigator.mediaDevices.getDisplayMedia({
  video: true,
});
let rtcStream: RtcStream = await bandwidthRtc.publish(screenShare);

Please see the following resources for more information on MediaStreamConstraints and MediaTrackConstraints that can be specified here:

disconnect

  • Description: disconnect device from the Bandwidth RTC platform

DTMF

  • Description: send a set of VoIP-network-friendly DTMF tones. The tone amplitude and duration can not be controlled
  • Params:
    • tone: the digits to send, as a string, chosen from the set of valid DTMF characters [0-9,*,#,,]
    • streamId (optional): the stream to 'play' the tone on
bandwidthRtc.sendDtmf("3");
bandwidthRtc.sendDtmf("313,3211*#");

Event Listeners

onStreamAvailable

  • Description: called when a media stream is available to attach to the UI. This will be called for every independent stream presented to the Participant, meaning that if a new remote Participant is added to a subscribed Session a new stream will be made available to the browser, and will need to be presented to the UI for consumption by the user.
bandwidthRtc.onStreamAvailable((event) => {
  console.log(
    `A stream is available with streamId=${event.mediaStream.id}, its media types are ${event.mediaTypes} and the stream itself is ${event.mediaStream}`,
  );
});

onStreamUnavailable

  • Description: called when a media stream is now unavailable and should be removed from the UI
bandwidthRtc.onStreamUnavailable((event) => {
  console.log(
    `The stream with streamId=${event.mediaStream.id} is now unavailable and should be removed from the UI because the media is likely to freeze imminently.`,
  );
});

Notes

  • Pinning rpc-websockets library to version 7.10.0 so that the transpiling and compilation of the RPC Client works.

About

Javascript SDK for Bandwidth RTC

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •