Socket
Socket
Sign inDemoInstall

@twilio/webrtc

Package Overview
Dependencies
0
Maintainers
1
Versions
34
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @twilio/webrtc

WebRTC-related APIs and shims used by twilio-video.js


Version published
Weekly downloads
13K
decreased by-17.37%
Maintainers
1
Install size
138 kB
Created
Weekly downloads
 

Readme

Source

twilio-webrtc.js

NPM CircleCI

twilio-webrtc.js contains the various WebRTC shims used by twilio-video.js. It is not intended for general consumption.

Installation

npm install --save @twilio/webrtc

Exports

The following WebRTC API shims are available:

const {
  getStats,
  getUserMedia,
  MediaStream,
  MediaStreamTrack,
  RTCIceCandidate,
  RTCPeerConnection,
  RTCSessionDescription
} = require('@twilio/webrtc');

getStats

getStats resolves with normalized WebRTC statistics for the active ICE candidate pair and each MediaStreamTrack, local or remote, of a particular RTCPeerConnection.

/**
 * Get the statistics for a given RTCPeerConnection.
 * @param {RTCPeerConnection} peerConnection
 * @returns {Promise<StandardizedStatsResponse>}
 */
function getStats(peerConnection) {}

NOTE: StandardizedStatsResponse normalizes the different formats of the stats returned by RTCPeerConnection#getStats in different browsers. It does not conform to the W3C spec.

getUserMedia

getUserMedia accepts a MediaStreamConstraints object and resolves with a MediaStream. By default, it requests both audio and video.

/**
 * Request media from the user.
 * @param {MediaStreamConstraints} [constraints={audio: true, video: true}]
 * @returns {Promise<MediaStream>}
 */
function getUserMedia(constraints) {}

RTCPeerConnection

RTCPeerConnection abstracts away some of the browser-specific implementations of WebRTC, and implements some WebRTC features that are not present in some browsers.

Chrome
  • Adds rollback support, according to the workaround specified here.
  • Adds "track" event support, as per the workaround in webrtc-adapter.
  • Provides a workaround for the case where, when the SSRC of a MediaStreamTrack changes, the browser treats this as a removal of the existing MediaStreamTrack and the addition of a new MediaStreamTrack.
  • Adds support for getting and setting maxPacketLifeTime on RTCDataChannels by remapping the legacy property maxRetransmitTime to maxPacketLifeTime. See this bug for more information.
  • Provides a workaround for this bug, where calling removeTrack with an RTCRtpSender that is not created by the RTCPeerConnection in question throws an exception.
Firefox
  • For new offers, adds support for calling setLocalDescription and setRemoteDescription in have-local-offer and have-remote-offer signaling states respectively.
  • Adds support for calling createOffer in signaling state have-local-offer.
  • The above features are implemented using rollback to work around this bug.
  • Provides a workaround for this bug, where the browser may change the previously negotiated DTLS role in an answer, which breaks Chrome.
  • Provides a workaround for this bug, where the browser throws when RTCPeerConnection.prototype.peerIdentity is accessed.
  • Works around Firefox Bug 1480277.
Safari
  • Adds rollback support, according to the workaround specified here.
  • Provides a workaround for the case where, when the SSRC of a MediaStreamTrack changes, the browser treats this as a removal of the existing MediaStreamTrack and the addition of a new MediaStreamTrack.
  • Provides a workaround for this bug, where webrtc-adapter's shimmed addTrack method does not return the RTCRtpSender associated with the added track.

RTCSessionDescription

RTCSessionDescription abstracts away some of the browser-specific implementations of WebRTC for Firefox and Safari, and works around this bug in Chrome, where the native RTCSessionDescription constructor throws when its argument is { type: 'rollback'}.

Others

MediaStream, MediaStreamTrack, and RTCIceCandidate abstracts away their browser-prefixed counterparts for earlier browser versions.

Keywords

FAQs

Last updated on 08 Mar 2022

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc