How Can I Easily Check the Status of webrtc-stats Across Browsers?

By Pallab Gain on August 30, 2018
read

Completely immersive, real-time experiences are becoming the de-facto standard for technology products. Internet-capable devices are becoming more and more affordable, and we are no longer limited by geography to communicate. Media systems have to provide intense, engaging adventures to keep consumer interest and support.

Immersive experiences require the entirety of a users’ attention. The user provides significant attention to the product, and the product provides a seamless user experience that keeps the user engaged. If this experience is disrupted for any period of time, the user can get annoyed and ultimately lose faith in the reliability of the product. In order to provide a captivating experience, reliable and frictionless operation is critical.

It is for this very reason that we at callstats.io build real-time monitoring software. To deliver high quality of media experience, it is critical to be actively detecting problems, diagnosing issues, and deploying fixes quickly. The importance of consistent, high-quality real-time communications cannot be understated.

What is Verify webrtc-stats?

To that end, a couple months ago we released Verify. Verify is a real-time solution that helps WebRTC developers check the status of the WebRTC statistics implementation across browser versions.

 

Verify webrtc-stats Screenshot

Figure 1: A screenshot of Verify webrtc-stats in action.

 

It supports verification of the statistics implementation for an audio only call and a video only call across different browsers, though support for recording, screen sharing, and other functionality is in process.

Why is it Important to Check webrtc-stats Across Browsers?

The WebRTC getStats() API provides access to 17 RTC statistics types across the WebRTC v1.0 media pipeline.

enum RTCStatsType {
    "codec",
    "inbound-rtp",
    "outbound-rtp",
    "remote-inbound-rtp",
    "remote-outbound-rtp",
    "csrc",
    "peer-connection",
    "data-channel",
    "stream",
    "track",
    "sender",
    "receiver",
    "transport",
    "candidate-pair",
    "local-candidate",
    "remote-candidate",
    "certificate"
};

WebRTC getStats() Statistics Types

Though many web browsers have implemented some of these statistics, the status of their implementation is not always clear. Browsers release new versions frequently - typically every six to eight weeks - so across the spectrum of browsers, something is changing most every week. This makes it difficult for WebRTC developers to keep track of what statistics are implemented or updated, especially when dealing with different browsers and versions. Browser compatibility issues can be very annoying, especially when there are so many browsers and versions to keep in mind.

Why did we Create Verify webrtc-stats?

There are lots of reasons behind why we chose to create Verify webrtc-stats. In many ways, it was a natural progression for us, as callstats.io is coauthoring the webrtc-stats API. webrtc-stats moved to the Candidate Recommendation stage, which has led browsers to start implementing the API. By creating Verify webrtc-stats, we are able to verify that browsers are implementing the API. Furthermore, the API should be reporting accurate measurements.

Verify webrtc-stats for Customer Support

Beyond the natural progression, there are also customer support reasons for why we have implemented Verify webrtc-stats. At times, it can be unclear if the browser supports the measurement or not. Our dashboard can send customers to Verify webrtc-stats to identify if the browser supports the given metric and compare support across different browsers.

Verify webrtc-stats for Product Management

Another important reason we implemented Verify webrtc-stats is to help product managers identify if a metric can be successfully incorporated into their app based on what is supported. We expose these metrics and more in csStatsCallback.

For example, the quality metric in csStatsCallback can be used to do a traffic light: red, yellow, or green to denote the user quality. Alternatively, if the developer wants raw metrics, they can look at the throughput, RTT, or fractionalLoss from csStatsCallback and convert those raw numbers into their own version of quality.

People in the Real-time Communications Space Love Verify webrtc-stats Too

Even though we released Verify webrtc-stats just a few short months ago, we have already seen it gain industry adoption and appreciation. Alex Gouaillard from CoSMo Software mentioned Verify webrtc-stats during his presentation at CommCon 2018 as a tool that “eventually will make the browser better and implementation better…”. We are happy to see Verify webrtc-stats being accepted as a useful tool for developers.

Where Verify Goes from Here

We created Verify to help developers stay informed of the latest updates with one quick, easy test, so they can focus on building great products instead of webrtc-stats.

To that end, we have even created a system that sends out updates when a new statistics type is implemented. If you want to opt-in to updates on when browsers implement new WebRTC statistics, subscribe to the updates.


Tags: WebRTC, getStats API, WebRTC Monitoring, Verify webrtc-stats