diff --git a/package.json b/package.json index d76c580..10735cc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@observertc/observer-js", - "version": "0.40.1-beta", + "version": "0.40.2-beta", "description": "Server Side NodeJS Library for processing ObserveRTC Samples", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/src/Observer.ts b/src/Observer.ts index 55fbe8e..61f83d4 100644 --- a/src/Observer.ts +++ b/src/Observer.ts @@ -4,12 +4,14 @@ import { ReportsCollector } from './ReportsCollector'; import { EventEmitter } from 'events'; import { PartialBy } from './common/utils'; import { createCallEndedEventReport, createCallStartedEventReport } from './common/callEventReports'; +import { ObserverSinkContext } from './common/types'; const logger = createLogger('Observer'); export type ObserverEvents = { 'newcall': [ObservedCall], // 'newsfu': [ObservedSfu], + 'reports': [ObserverSinkContext], 'close': [], } @@ -72,8 +74,10 @@ export class Observer extends EventEmitter { ) { super(); this.setMaxListeners(Infinity); - + logger.debug('Observer is created with config', this.config); + + const onReports = (context: ObserverSinkContext) => this.emit('reports', context); const onNewReport = (collectedReports: number) => { if (!this.config.maxReports || this._closed) return; if (this.config.maxReports < collectedReports) { @@ -83,8 +87,12 @@ export class Observer extends EventEmitter { this._emitReports(); - this.once('close', () => this.reports.off('newreport', onNewReport)); + this.once('close', () => { + this.reports.off('newreport', onNewReport); + this.reports.off('reports', onReports); + }); this.reports.on('newreport', onNewReport); + this.reports.on('reports', onReports); } public createObservedCall = Record>( @@ -140,6 +148,8 @@ export class Observer extends EventEmitter { return logger.debug('Attempted to close twice'); } this._closed = true; + + this._observedCalls.forEach((call) => call.close()); this.emit('close'); }