Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/observertc/observer-js
Server-side component to monitor WebRTC stack
https://github.com/observertc/observer-js
monitoring nodejs webrtc
Last synced: 3 months ago
JSON representation
Server-side component to monitor WebRTC stack
- Host: GitHub
- URL: https://github.com/observertc/observer-js
- Owner: ObserveRTC
- License: apache-2.0
- Created: 2023-04-09T05:29:51.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2024-04-10T16:29:41.000Z (10 months ago)
- Last Synced: 2024-04-13T20:52:15.752Z (10 months ago)
- Topics: monitoring, nodejs, webrtc
- Language: TypeScript
- Homepage: https://observertc.org
- Size: 465 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
Server side component for monitoring WebRTC applications and services
---Table of Contents:
* [Quick Start](#quick-start)
* [Configurations](#configurations)
* [NPM package](#npm-package)
* [Schemas](#schemas)
* [License](#license)## Qucik Start
Install it from [npm](https://www.npmjs.com/package/@observertc/observer-js) package repository.
```
npm i @observertc/observer-js
```Use it in your server side NodeJS app.
```javascript
import { createObserver, ClientSample } from "@observertc/observer-js";const observer = createObserver({
defaultServiceId: 'my-service-name',
defaultMediaUnitId: 'my-reporting-component',
});const observedCall = observer.createObservedCall({
roomId: 'roomId',
callId: 'room-session-id',
});const observedClient = observedCall.createObservedClient({
clientId: 'client-id',
mediaUnitId: 'media-unit-id',
});const clientSample: ClientSample; // Receive your samples, for example, from a WebSocket
observedClient.accept(clientSample);
```The above example do as follows:
1. create an observer to evaluate samples from clients and sfus
2. create a client source object to accept client samples
3. add an evaluator process to evaluate ended calls### Get a Summary of a call when it ends
```javascript
const monitor = observer.createCallSummaryMonitor('summary', (summary) => {
console.log('Call Summary', summary);
});
```### How Many Clients are using TURN?
```javascript
const monitor = observer.createTurnUsageMonitor('turn', (turn) => {
console.log('TURN', turn);
});// at any point of time you can get the current state of the turn usage
console.log('Currently ', monitor.clients.size, 'clients are using TURN');
// you can get the incoming and outgoing bytes of the TURN server
console.log(`${YOUR_TURN_SERVER_ADDRESS} usage:`, monitor.getUsage(YOUR_TURN_SERVER_ADDRESS));```
### Monitor Calls and Clients as they updated
```javascript
observer.on('newcall', (call) => {
call.on('update', () => {
console.log('Call Updated', call.callId);
});call.on('newclient', (client) => {
client.on('update', () => {
console.log('Client Updated', client.clientId);console.log(`The avaialble incoming bitrate for the client ${client.clientId} is: ${client.availableIncomingBitrate}`)
});
})
});
```## NPM package
https://www.npmjs.com/package/@observertc/observer-js
## Schemas
https://github.com/observertc/schemas
## License
Apache-2.0