rtc.io Module Reference
The rtc.io suite is made up of a number of modules, which cater for different needs.
Browser Modules
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.
rtc
Bundled module for getting a your WebRTC app up and running quickly.
rtc-quickconnect
Provides a high level wrapper around the lower-level client libraries and is designed to get you building WebRTC applications very quickly.
rtc-dcstream
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
The 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.
rtc-signaller
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
The 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.
rtc-quickconnect plugins
rtc-mesh
This plugin provides a simple way to use WebRTC data channels to provide synchronized client state using ScuttleButt and it's derivatives.
rtc-sharedcursor
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
The rtc-captureconfig
module is used in rtc
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:
rtc-videoproc
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.
rtc-audioproc
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.
Server Modules
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.
rtc-switchboard
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.