rtc.io Module Reference
The rtc.io suite is made up of a number of modules, which cater for different needs.
The following is a list of modules that are designed for use within a browser. Each of these modules (unless otherwise specified) is designed to be built into an application using browserify. In our experience, using browserify in conjunction with npm provides a very smooth development experience.
Provides a high level wrapper around the lower-level client libraries and is designed to get you building WebRTC applications very quickly.
Designed to provide a pure HTML tag based approach to building WebRTC applications,
glue.js file in your HTML page, provide some additional HTML attributes on well known HTML elements and you will be well on your way to creating simple applications.
This is a node compatible stream (streams2) module for working with WebRTC data channels. As per
rtc-mesh this module has been tested against Chrome 32+ and Firefox 26 and shown excellent interoperability.
rtc-tools module is a collection of reusable functions that assist developers wanting to work with WebRTC at a lower level. It is designed to assist with some of the repetitive tasks that are associated with developing WebRTC applications.
Signalling is a big part of any WebRTC application. The
rtc-signaller module is the rtc.io suites signalling layer, and is designed as a "transport agnostic" signalling mechanism.
While in almost all our WebRTC implementations we have used websockets for signalling, the
rtc-signaller module is capable of signalling and coordinating connections over any bi-directional communication channel that supports sending text messages.
rtc-core module contains some lower-level, shared functionality that is used by most of the above client-side libraries. It assists with cross-browser detection of
RTCPeerConnection classes and other similar functions.
This plugin provides a simple way to use WebRTC data channels to provide synchronized client state using ScuttleButt and it's derivatives.
This module provides a simple way to implement cursor sharing in a WebRTC application.
The module is designed to work in conjuction with
rtc-quickconnect sends small (48-bit) payloads of relative
mouse (or touch) changes via a WebRTC data channel to connected peers.
Browser Utility Modules
rtc-captureconfig module is used in
rtc-glue to convert simple string based attributes to valid WebRTC constraints that can be used in for media capture.
Browser Processing Modules
Once you are capturing realtime video and audio in the browser, there is a lot that can be done in terms of video and audio analysis. Listed below are modules that assist doing exactly that:
The video processing module allows you to replace a standard video element with a simulated video element using a HTML5 canvas. This custom canvas provides a video processing pipeline that permits analysis and optional modification of the pixel data that is being drawn to the canvas.
The audio processing module allows you to render a canvas to visualize audio from an audio or video element, or a getUserMedia stream. It uses the Web Audio API. This can be useful to display audio visually, or to track down when a video or audio element does not behave as you expect.
While the clientside modules make up 85% of the rtc.io suite, we do have some server-side node modules that are designed to work with our client side modules when building applications.
This is the server-side companion to the
rtc-signaller module. If you are looking to host a simple in-memory signalling server this is an excellent place to start.
It has been constructed using primus for the websocket communication layer, which means that different node websocket implementations can be used in your applications.
The switchboard can either be incorporated into your node server application code, or hosted separately - whatever best suits your application architecture.