getStats.js
A tiny JavaScript library using WebRTC getStats API to return peer connection stats i.e. bandwidth usage, packets lost, local/remote ip addresses and ports, type of connection etc.
It is MIT Licenced, which means that you can use it in any commercial/non-commercial product, free of cost.
npm install getstats
To use it:
<script src="./node_modules/getstats/getStats.js"></script>
Link the library
<script src="https://cdn.webrtc-experiment.com/getStats.js"></script>
Or link specific build:
window.getStats
To invoke directly:
getStats(peer, callback, interval);
RTCPeerConnection.prototype.getPeerStats
Or, to setup an instance method:
// if your code is encapsulated under a method
(function() {
RTCPeerConnection.prototype.getPeerStats = window.getStats;
// or
RTCPeerConnection.prototype.__getStats = window.getStats;
// or
RTCPeerConnection.prototype.getConnectionStats = window.getStats;
// or
RTCPeerConnection.prototype['your-choice'] = window.getStats;
})();
NEVER set/override RTCPeerConnection.prototype.getStats
because it is a reserved method.
// following will fail
RTCPeerConnection.prototype.getStats = window.getStats;
// it should be
RTCPeerConnection.prototype.intanceMethodNamae = window.getStats;
Usage
var rtcPeerConnection = new RTCPeerConnection(iceServers);
var repeatInterval = 2000; // 2000 ms == 2 seconds
rtcPeerConnection.getPeerStats(function(result) {
result.connectionType.remote.ipAddress
result.connectionType.remote.candidateType
result.connectionType.transport
result.audio.availableBandwidth
result.audio.packetsSent
result.audio.packetsLost
result.audio.rtt
// to access native "results" array
result.results.forEach(function(r) {
console.log(r);
});
}, repeatInterval);
Firefox?
peer.getStats(peer.getLocalStreams()[0].getAudioTracks()[0], function(results) {
// rest goes here
}, 5 * 1000);
result.audio
- availableBandwidth
- inputLevel
- packetsLost
- rtt
- packetsSent
- bytesSent
result.video
- availableBandwidth
- googFrameHeightInput
- googFrameWidthInput
- googCaptureQueueDelayMsPerS
- rtt
- packetsLost
- packetsSent
- googEncodeUsagePercent
- googCpuLimitedResolution
- googNacksReceived
- googFrameRateInput
- googPlisReceived
- googViewLimitedResolution
- googCaptureJitterMs
- googAvgEncodeMs
- googFrameHeightSent
- googFrameRateSent
- googBandwidthLimitedResolution
- googFrameWidthSent
- googFirsReceived
- bytesSent
result.connectionType
- local.candidateType
- local.ipAddress
- remote.candidateType
- remote.ipAddress
- transport
result.results
It is an array that is returned by browser's native PeerConnection API.
Credits
- Personal Webpage: http://www.muazkhan.com
- Email: muazkh@gmail.com
- Twitter: https://twitter.com/muazkh and https://twitter.com/WebRTCWeb
- Google+: https://plus.google.com/+WebRTC-Experiment
- Facebook: https://www.facebook.com/WebRTC
License
getStats.js is released under MIT licence . Copyright (c) Muaz Khan.