npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@twilio/webrtc

v4.6.0

Published

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

Downloads

45,638

Readme

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.