Skip to content

Instantly share code, notes, and snippets.

@penguinbroker
Created December 30, 2011 00:27
Show Gist options
  • Save penguinbroker/1536901 to your computer and use it in GitHub Desktop.
Save penguinbroker/1536901 to your computer and use it in GitHub Desktop.
$(document).ready( function() {
var chatSession = <?=json_encode($tokbox)?>
, connected = 0
, session = null
, isPublishing = 0
, publisher = null
, numStreams = 0
, subscribers = {}
, publisherProps = {width: 100, height:80, name:tbMyName}
, subscriberProps = {width: 100, height:80};
// load TokBox Lib
if (typeof(TB) != 'undefined') {
TB.addEventListener(TB.EXCEPTION, function() {
log("Exception: "+event.code+" :: "+event.message);
});
}
if (TB.checkSystemRequirements() != TB.HAS_REQUIREMENTS) {
TBA.growl('video not available');
alert("You don't have the minimum requirements for video chat. Please upgrade to the latest version of Flash.");
return;
}
TB.setLogLevel(5);
session = TB.initSession(chatSession.sessID);
// Add event listeners to the session
session.addEventListener('sessionConnected', function (event) {
var session = this;
$('#videoPanel div.header').addClass('online');
connected = 1;
for (stream in event.streams) {
if (typeof(stream.connection) != 'undefined') {
if (stream.connection.connectionId == session.connection.connectionId) {
isPublishing = 1;
return;
}
subDiv = document.createElement('div');
subDiv.setAttribute('id', stream.streamId);
$("#videos").append(subDiv);
subscribers[stream.streamId] = session.subscribe(stream, stream.streamId, subscriberProps);
numStreams++;
}
}
});
session.addEventListener('sessionDisconnected', function() {
$('#videoPanel div.header').removeClass('online');
connected = 0;
publisher = null;
isPublishing = 0;
session = null;
numStreams = 0;
});
session.addEventListener('connectionCreated', function() {
$('#videoPanel div.header').addClass('online');
connected = 1;
});
session.addEventListener('connectionDestroyed', function() {
});
session.addEventListener('streamCreated', function (event) {
$('#videoPanel div.header').addClass('online');
connected = 1;
for (stream in event.streams) {
if (typeof(stream.connection) != 'undefined') {
if (stream.connection.connectionId == session.connection.connectionId) {
session._isPublishing = 1;
return;
}
subDiv = document.createElement('div') // Create a div for the subscriber to replace
subDiv.setAttribute('id', stream.streamId); // Give the replacement div the id of the stream as its id.
$("#videos").append(subDiv);
subscribers[stream.streamId] = session.subscribe(stream, subDiv.id, subscriberProps);
numStreams++;
}
}
});
session.addEventListener('streamDestroyed', function (event) {
sessionID = null;
try { sessionID = event['target']['sessionId']; }
catch (err) { return; }
numStreams--;
});
// connect
log('connecting');
session.connect(1935341, chatSession.token);
$('#myFeedToggler').live('click', function() {
if (connected == 0) {
alert('Unable to connect to TokBox servers');
return;
}
if (isPublishing) {
//alert 'You can only publish video to a single chat session at any given time.'
return;
}
pubDiv = document.createElement('div');
pubDiv.setAttribute('id', 'opentok_publisher');
$("#myFeed").html(pubDiv);
$('#myFeedToggler').hide();
$('#myFeedWrapper').removeClass('active').addClass('prompt');
publisher = session.publish(pubDiv.id, publisherProps);
publisher.addEventListener('accessAllowed', function() {
$('#myFeedWrapper').removeClass('prompt').addClass('active');
isPublishing = 1;
$('#webcamAction').fadeIn(200);
});
publisher.addEventListener('accessDenied', function() {
$('#webcamAction').hide();
$('#myFeedWrapper').removeClass('prompt').removeClass('active');
$('#myFeedToggler').fadeIn(200);
});
});
$('#myFeedTogglerOff').live('click', function() {
$('#webcamAction').hide();
$('#myFeedWrapper').removeClass('prompt').removeClass('active');
$('#myFeedToggler').fadeIn(200);
//$("#myFeed").empty();
if (publisher) {
session.unpublish(publisher);
}
publisher = null;
isPublishing = 0;
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment