You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

statistics.js 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /* global require, APP */
  2. /**
  3. * Created by hristo on 8/4/14.
  4. */
  5. var RTPStats = require("./RTPStatsCollector.js");
  6. var EventEmitter = require("events");
  7. var StreamEventTypes = require("../../service/RTC/StreamEventTypes.js");
  8. var XMPPEvents = require("../../service/xmpp/XMPPEvents");
  9. var RTCEvents = require("../../service/RTC/RTCEvents");
  10. var StatisticsEvents = require("../../service/statistics/Events");
  11. var eventEmitter = new EventEmitter();
  12. var rtpStats = null;
  13. function stopRemote() {
  14. if (rtpStats) {
  15. rtpStats.stop();
  16. eventEmitter.emit(StatisticsEvents.STOP);
  17. rtpStats = null;
  18. }
  19. }
  20. function startRemoteStats (peerconnection) {
  21. if (rtpStats) {
  22. rtpStats.stop();
  23. }
  24. rtpStats = new RTPStats(peerconnection, 200, 2000, eventEmitter);
  25. rtpStats.start();
  26. }
  27. function onDisposeConference(onUnload) {
  28. stopRemote();
  29. if (onUnload) {
  30. eventEmitter.removeAllListeners();
  31. }
  32. }
  33. export default {
  34. /**
  35. * Indicates that this audio level is for local jid.
  36. * @type {string}
  37. */
  38. LOCAL_JID: 'local',
  39. addListener: function(type, listener) {
  40. eventEmitter.on(type, listener);
  41. },
  42. removeListener: function (type, listener) {
  43. eventEmitter.removeListener(type, listener);
  44. },
  45. stop: function () {
  46. stopRemote();
  47. if (eventEmitter) {
  48. eventEmitter.removeAllListeners();
  49. }
  50. },
  51. start: function () {
  52. const xmpp = APP.conference._room.xmpp;
  53. xmpp.addListener(
  54. XMPPEvents.DISPOSE_CONFERENCE,
  55. onDisposeConference
  56. );
  57. //FIXME: we may want to change CALL INCOMING event to
  58. // onnegotiationneeded
  59. xmpp.addListener(XMPPEvents.CALL_INCOMING, function (event) {
  60. startRemoteStats(event.peerconnection);
  61. });
  62. }
  63. };