Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Для анализа исходного кода возьмем версию модуля stats.js, которая находится здесь

Выявление скачков одного параметра

1. Инициализация обрабатываемого параметра

Threshold()  code

Здесь:

  • запоминается имя параметра и максимально допустимый предел его изменения
  • создается фильтр Калмана для этого параметра

...

2. Получение массива параметров WebRTC статистики и проверка параметра

Threshold.isReached()  code

Здесь:

  • текущее значение параметра проходит через фильтр Калмана
  • если изменение значения превышает допустимую величину, фиксируется скачок параметра

...

1. Добавление параметра в список

Thresholds.add()  code

Code Block
languagejs
themeRDark
        add: function(parameter, maxLeap) {
            if (!thresholds.thresholds[parameter]) {
                thresholds.thresholds[parameter] = new Threshold(parameter, maxLeap);
            }
        },

2. Удаление параметра из списка

Thresholds.remove()  code

Code Block
languagejs
themeRDark
        remove: function(parameter) {
            if (thresholds.thresholds[parameter]) {
                delete thresholds.thresholds[parameter];
            }
        },

3.  Получение массива параметров WebRTC статистики и проверка списка параметров

Thresholds.isReached()  code

Code Block
languagejs
themeRDark
        isReached: function(stats) {
            let result = false;
            Object.keys(thresholds.thresholds).forEach((key) => {
                result = result || thresholds.thresholds[key].isReached(stats);
            });
            return result;
        }