Fork me on GitHub
Janus - General purpose WebRTC Gateway
Developer Documentation for the Janus WebRTC Gateway
This is the main developer documentation for the Janus WebRTC Gateway, 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 the gateway, checkout the README information. A Frequently Asked Questions page is also available.
A general purpose gateway
The Janus WebRTC Gateway has been conceived as a general purpose gateway. 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 gateway 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 gateway on the cloud, or a small nettop/box to handle a specific use case.

Architecture and APIs
The core of the gateway is specified in the Core section. The protocols implemented in the gateway are listed in the Protocols group instead. A list of plugins made available out of the box by Meetecho are available in the Plugins group: 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 the gateway and the plugins it makes available in your web application can be found in the JavaScript API and RESTful, WebSockets, RabbitMQ, MQTT 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 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.

This is only the first version of the gateway, and as such it is a bit rough at the edges: there is definitely room for improvement, there are bugs, limitations, and things that need to be done. For a quick glance on the most relevant pending stuff check our Todo List (and, if you're willing to help on any of those, get in touch with us!). Make also sure you read the Debugging Janus page for info on how you can help us fixing issues you might encounter along the road.

Copyright and author

Janus WebRTC Gateway © 2014-2016 Meetecho (http://www.meetecho.com/)

Author
Lorenzo Miniero loren.nosp@m.zo@m.nosp@m.eetec.nosp@m.ho.c.nosp@m.om ( Credits )

License

This program is free software, distributed under the terms of the GNU General Public License Version 3. For more details and licensing options, including a commercial license, see the License page.