This is the main developer documentation for the Janus WebRTC Server, generated with the help of Doxygen. Make sure you check the Dependencies before attempting a compilation. If you are interested in how to compile, install and use Janus, checkout the README information. A Frequently Asked Questions page is also available.

A general purpose WebRTC server

The Janus WebRTC Server has been conceived as a general purpose server. As such, it doesn't provide any functionality per se other than implementing the means to set up a WebRTC media communication with a browser, exchanging JSON messages with it, and relaying RTP/RTCP and messages between browsers and the server-side application logic they're attached to. Any specific feature/application needs to be implemented in server side plugins, that browsers can then contact via the Janus core to take advantage of the functionality they provide. Example of such plugins can be implementations of applications like echo tests, conference bridges, media recorders, SIP gateways and the like.

The reason for this is simple: we wanted something that would have a small footprint (hence a C implementation) and that we could only equip with what was really needed (hence pluggable modules). That is, something that would allow us to deploy either a full-fledged WebRTC server on the cloud, or a small nettop/box to handle a specific use case.

Architecture and APIs

The core of the server is specified in the Core section. The protocols implemented in the Janus core are listed in the Protocols group instead. A list of plugins provided out of the box by Meetecho are documented in the Plugins documentation page: these plugins can be changed or extended to match your requirements, or just used as a simple reference should you be interested in writing a new plugin from scratch (and you're definitely welcome to!). A Plugin API to create new plugins, or understand how they're conceived, is documented as well. A documentation on the available API tranports and the HTTP/WebSocket JavaScript API to use Janus and the plugins it makes available in your web application can be found in the JavaScript API and RESTful, WebSockets, RabbitMQ, MQTT, Nanomsg and UnixSockets API pages. New API transports can be created referring to the Transport API page. If you're interested in monitoring Janus resources, you can refer to the Admin/Monitor API page. Event handler plugins can also be used for the purpose: refer to the Event Handler API page if you're interested in creating your own.

Finally, some information on how to deploy Janus and your web applications that want to make use of it are provided in the Deploying Janus page. If you're interested in starting Janus as a service/daemon rather than launching it normally, check the information provided in the Janus as a daemon/service page. Some additional Resources are also listed in case you're interested in talking to Janus from different languages and platforms.

To conclude, the Debugging Janus page contains info on how you can help us fixing issues you might encounter along the road.