Skip to content

Instantly share code, notes, and snippets.

@tgoldenberg
Last active August 29, 2015 14:25
Show Gist options
  • Select an option

  • Save tgoldenberg/f77000bbdc430101254e to your computer and use it in GitHub Desktop.

Select an option

Save tgoldenberg/f77000bbdc430101254e to your computer and use it in GitHub Desktop.
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
var mediaOptions = {
audio: true,
video: {
mandatory: {
minWidth: 1280,
minHeight: 720
}
}
};
$(function() {
// data for current User
var currentUser = {
name: name,
id: guid(),
stream: undefined
};
// get local user media stream
navigator.getUserMedia(mediaOptions, function(stream) {
currentUser.stream = stream;
var video = $('#localVideo')[0];
video.src = window.URL.createObjectURL(stream);
start(); // start connection
}, function() {});
function start() {
// initialize Pusher
var pusher = new Pusher($('#chat').data().apiKey, {
authEndpoint: '/pusher/auth',
auth: {
params: currentUser
}
});
function gotRemoteVideo(userId, userName, stream) {
var video = $("<video autoplay data-user-id='" + userId + "'/>");
video[0].src = window.URL.createObjectURL(stream);
$('#remoteVideos').append(video);
var preview = $("<li data-user-id='" + userId + "'>");
preview.append("<video autoplay/>");
preview.append("<div class='name'>" + userName + "</div></li>")
preview.find('video')[0].src = window.URL.createObjectURL(stream);
$('#allVideos').append(preview);
}
function setupPeer(peerUserId, peerUserName, initiator) {
var peer = new SimplePeer({ initiator: initiator, stream: currentUser.stream, trickle: false });
peer.on('signal', function (data) {
channel.trigger('client-signal-' + peerUserId, {
userId: currentUser.id, userName: currentUser.name, data: data
});
});
peer.on('stream', function(stream) { gotRemoteVideo(peerUserId, peerUserName, stream) });
return peer;
}
function initiateConnection(peerUserId, peerUserName) {
return setupPeer(peerUserId, peerUserName, true);
};
channel.bind('client-signal-' + currentUser.id, function(signal) {
var peer = peers[signal.userId];
if (peer === undefined) {
peer = setupPeer(signal.userId, signal.userName, false);
}
peer.on('ready', function() {
appendMessage(signal.userName, '<em>Connected</em>');
});
peer.signal(signal.data)
});
var speech = hark(currentUser.stream);
speech.on('speaking', function() {
for (var userId in peers) {
var peer = peers[userId];
peer.send('__SPEAKING__');
}
});
}
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment