RTCMultiConnection All-in-One test ® Muaz Khan
HOME © Muaz Khan . @WebRTCWeb . Github . Latest issues . What's New?
Select SessionType and Direction-of-Flow!
WebRTC DataChannel
Text Chat |
Share Files |
- Mesh networking model is implemented to open multiple (1:1) interconnected peer connections
- Maximum peer connections limit per page is 256 (on chrome) i.e. 256 users can connect together!
How to use RTCMultiConnection?
// https://cdn.webrtc-experiment.com/RTCMultiConnection.js
Common Code
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) connection.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 connection.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 connection.onstreamended = function(event) { event.mediaElement.parentNode.removeChild(event.mediaElement); };