Asynchronous event/state notifications in the Janus WebRTC server Providing administrators and deve…
Channel: FOSDEM
Date: 2018-03-08

Asynchronous event/state notifications in the Janus WebRTC server Providing administrators and developers with more tools to manage a Janus instance
by Lorenzo Miniero

At: FOSDEM 2017

This presentation introduces a new modular mechanism for implementing livestate and event notifications within the context of Janus WebRTC serverinstances, for the purpose of allowing administrators and developers tomonitor and handle WebRTC sessions more effectively.

Janus is a general purpose open source WebRTC server and gateway. It allowsyou to implement heterogeneous and complex WebRTC multimedia applicationsusing the different functionality it provides as modules, and can interactwith legacy technologies as well in the process (e.g., SIP or RTSP). Anintroduction to Janus was made ad Fosdem '16. This new presentation is aimedto address a new feature recently added to Janus, and currently being workedon in a separate branch that will soon be merged.

Specifically, a modular mechanism has been designed and implemented to allowmodules to receive asynchronous and live events of several different typesfrom Janus and its plugins, in order to then handle them accordingly.Notifications can be about whatever is happening in a Janus instance, e.g.,Janus sessions/handles and their states, PeerConnections and their lifecycle(SDP exchanges, ICE and DTLS state changes, etc.), application plugininternals and related events, and so on. These new modules can then decidewhether to just forward these events, or a subset of them, to an externalbackend for further processing, or process them themselves. Use case examplesare simple debugging, live monitoring, troubleshooting, storing on DBs orother systems in a structured way, CDRs, etc. Within the context of Janus,this is particularly useful as so far the only API available to administratorshas been a query/response API to monitor the WebRTC internals of Janus itselfand a few other aspects, which limited the scope of what admins could do toeffectively manage a Janus instance.

At the time of writing, a single module implementing this mechanism exists,one we implemented ourselves as a proof of concept and that simply forwardsall events as JSON objects to an external web server. In the future moremodules will be implemented to cover more practical scenarios, hopefully bythird-party developers as well.


Room: K.3.401
Scheduled start: 2017-02-04 16:10:00