More Website Templates @ TemplateMonster.com - June 16, 2014!

Searching for a single WebRTC Library supporting everything?

RTCMultiConnection is written by an individual, Muaz Khan, however maintained by WebRTC community. Remember, it is not a "complete" framework. Also, it isn't a MCU. Also, it isn't supporting SDKs for iOS. RTCMultiConnection helps you test "approximately" all WebRTC features in peer-to-peer context; and guaranteedly speaking, you'll have full-control over each bit. Not joking :) Simplest possible API are provided to give you full control over each execution context. Nothing is hidden from you!. Nothing is away from you! You don't need to modify library yourself because the library is providing API/methods/properties for everything! API Documentations!

However, RTCMultiConnection may seems complex to newbies, however believe me, it isn't as complex as its name sounds :) Getting Started!
List of All Demos

Link The Library (Source Code)

https://cdn.webrtc-experiment.com/RTCMultiConnection.js

Common Code (Quick Simple Demo)

var MODERATOR_CHANNEL_ID = 'ABCDEF'; // channel-id
var MODERATOR_SESSION_ID = 'XYZ';    // room-id
var MODERATOR_ID         = 'JKL';    // user-id
var MODERATOR_SESSION    = {         // media-type
    audio: true,
    video: true
};
var MODERATOR_EXTRA      = {};       // empty extra-data

Code for Room Moderator (i.e. Initiator)

var moderator     = new RTCMultiConnection(MODERATOR_CHANNEL_ID);
moderator.session = MODERATOR_SESSION;
moderator.userid  = MODERATOR_ID;
moderator.extra   = MODERATOR_EXTRA;
moderator.open({
    dontTransmit: true,
    sessionid:    MODERATOR_SESSION_ID
});

Code for Room Participants

var participants = new RTCMultiConnection(MODERATOR_CHANNEL_ID);
participants.join({
    sessionid: MODERATOR_SESSION_ID,
    userid:    MODERATOR_ID,
    extra:     MODERATOR_EXTRA,
    session:   MODERATOR_SESSION
});

(optional) Handle how to get streams

// same code can be used for participants
// (it is optional) 
moderator.onstreamid = function(event) {
    // got a clue of incoming remote stream
    // didn't get remote stream yet
    
    var incoming_stream_id = event.streamid;
    
    YOUR_PREVIEW_IMAGE.show();
    
    // or
    YOUR_PREVIEW_VIDEO.show();
};

// same code can be used for participants
// it is useful
moderator.onstream = function(event) {
    // got local or remote stream
    // if(event.type == 'local')  {}
    // if(event.type == 'remote') {}
    
    document.body.appendChild(event.mediaElement);
    
    // or YOUR_VIDEO.src = event.blobURL;
    // or YOUR_VIDEO.src = URL.createObjectURL(event.stream);
};

// same code can be used for participants
// it is useful but optional
moderator.onstreamended = function(event) {
    event.mediaElement.parentNode.removeChild(event.mediaElement);
};
Getting Started Guide