CallStats.io and WebRTC: An Interview With Varun Singh

Monitoring a WebRTC deployment.
So, you've developed your video calling service with WebRTC, and now people are doing calls with it all day long. There are thousands of them. Millions. Do you know how well your service works for them? The next step in the chapter of WebRTC is dealing seriously with aspects like performance monitoring, and callstats.io is one of the vendors trying to tackle this topic.
I've ran into Varun Singh, Co Founder at callstats.io a couple of times, and I think the story of his new company is an interesting one – very different than most video performance monitoring solutions that are out there for non-WebRTC deployments already.
Here's what he had to say.
What is callstats.io all about?
callstats.io provides performance monitoring services for WebRTC systems. Speaking with several WebRTC application developers, we found that 1) they have inadequate tools to measure performance of the video calls served by their service, 2) not all of them understand or have sufficient knowledge to understand video performance, and 3) have the expectation that the underlying system should just work as they intend it to.
callstats.io as a first step provides APIs that are integrated into an WebRTC application to help monitor the performance of the media flows. Our system is built bottom-up, we observe each flow in a conference, aggregate the performance of all participants in a conference, and lastly, the service level. As a second step, callstats.io provides guidance to the application developer or WebRTC service provider to better manage the multimedia experience. We are working on a notification and a diagnostic system to help with deployment and operational issues.
We are excited about callstats.io and are working with:
I've ran into Varun Singh, Co Founder at callstats.io a couple of times, and I think the story of his new company is an interesting one – very different than most video performance monitoring solutions that are out there for non-WebRTC deployments already.
Here's what he had to say.
What is callstats.io all about?
callstats.io provides performance monitoring services for WebRTC systems. Speaking with several WebRTC application developers, we found that 1) they have inadequate tools to measure performance of the video calls served by their service, 2) not all of them understand or have sufficient knowledge to understand video performance, and 3) have the expectation that the underlying system should just work as they intend it to.
callstats.io as a first step provides APIs that are integrated into an WebRTC application to help monitor the performance of the media flows. Our system is built bottom-up, we observe each flow in a conference, aggregate the performance of all participants in a conference, and lastly, the service level. As a second step, callstats.io provides guidance to the application developer or WebRTC service provider to better manage the multimedia experience. We are working on a notification and a diagnostic system to help with deployment and operational issues.
We are excited about callstats.io and are working with:
- Application developers building WebRTC applications.
- WebRTC SDK providers.
- Infrastructure and service providers (MVNOs, ISPs, equipment manufacturers).



in the callstatsio have you overwrite the webkitRTCPeerConnection constructor in javascript?
I have a server (server A) use WebRTC video call. If i use getStats() i need insert code into this server (server A).
But I want create new server( server B) to monitor server A. ( i do not change code in server A).
the callstatsio have support?
Hi Duong,
We have a network probe that passively monitors the flows, it does not require any code change on system A, just runs alongside it. However, it can write data locally or sends data to our measurement system and not to system B.
Drop me an email at varun at callstats dot io.
Thanks Varun Singh,
Could you tell me about the "network probe"? Is this "only" build in by javascript ?
Thanks alot,
The network probe is in written in C, is a binary that runs beside your server. Where is it that you want to measure the performance? at the endpoints running your javascript app, in this case the callstats.js can integrate with your javascript app.
In any case drop me an email, because I may be misunderstanding something.
-Varun
Hi Varun Singh,
This is architecture:
-Server A:
--Server.js
--webrtcClient.js
--index.html
--callstats.js
--myfile.js
-Server B:
--Server.js
--Index.html
My project run with nodejs server.
In server A:
Server.js and webrtcClient.js are those file I do not change code. In webrtcClient.js file I have a variable named peerConnections that is a list of PeerConnection object.
callstats.js is your lib .
In myfile.js I want to reuse peerConnections variable (from webrtcClient.js file) to getstats() PeerConnection, then send data to Server B.
How is the issue resolved? Can callstats.js lib help me resolve this problem?
yes you pass the peer connection object to callstats.JS and it will send data to our backend, where you can observe the measurement data. The JS doesn't send data to another third party server. We haven't considered that use case yet.
Hi Varun Singh,
Thanks for your help.
I still have a question: can i use callstats.js lib to "GET" peer connection object in webrtcClient.js (overwrite the peeconnection object)?
Have any Callstats.js method or function to "get" peer connection object?