Skip to content

Instantly share code, notes, and snippets.

@kenzan100
Created December 16, 2015 09:12
Show Gist options
  • Save kenzan100/d14ded1195f04d70f503 to your computer and use it in GitHub Desktop.
Save kenzan100/d14ded1195f04d70f503 to your computer and use it in GitHub Desktop.
webrtc full_mesh sample
navigator.getUserMedia = navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia;
var SKYWAY_API_KEY = 'XXXXXXXXXXXXXXX';
var peer =null;
var selfId = null;
var localStream = null;
function initializePeer(callback) {
peer = new Peer({ key: SKYWAY_API_KEY });
peer.on('open', function(id) {
selfId = id;
callback();
});
peer.on('call', function(mediaConnection) {
mediaConnection.answer(localStream);
settingMediaConnection(mediaConnection);
});
peer.on('close', function(){
peer.destroy();
});
peer.on('error', function(err){
console.error(err);
});
}
function initializeMedia(callback) {
navigator.getUserMedia(
{ audio: true, video: true },
function(stream) {
localStream = stream;
var video = document.getElementById('myVideo');
video.src = URL.createObjectURL(stream);
video.play();
callback();
},
function(err) {
console.error(err);
}
);
}
function callRemoteAll() {
peer.listAllPeers(function(remoteIds) {
for (var i = 0; i < remoteIds.length; i++ ) {
var remoteId = remoteIds[i];
var mediaConnection = peer.call(remoteId, localStream);
settingMediaConnection(mediaConnection);
}
});
}
function settingMediaConnection(mediaConnection) {
var remoteId = mediaConnection.peer;
var remoteStream = null;
var video = null;
mediaConnection.on('stream', function(stream) {
video = document.createElement('video');
video.src = URL.createObjectURL(stream);
video.play();
var parent = document.getElementById('remoteVideos');
parent.appendChild(video);
});
mediaConnection.on('close', function(){
URL.revokeObjectURL(video.src);
video.parentNode.removeChild(video);
});
mediaConnection.on('error', function(err){
console.error(err);
});
}
function initialize() {
initializeMedia(function() {
initializePeer(function() {
callRemoteAll();
});
});
}
window.addEventListener('load', initialize);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment