exports.joinInterview = function (interviewId, participantId, callback) {

    var token = ot.generateToken({
        connection_data: participantId,
        role: 'publisher'
    });

    var interview = interviews[interviewId];

    if (interview) { // Interview exists

        interview.drafts[participantId] = interview.source;

        callback(interview, token);
        return;
    }

    // Creating new interview and TB session

    var source = fs.readFileSync('default.html', 'utf-8');
    interview = {
        interviewId: interviewId,
        apiKey: OPENTOK_API_KEY,
        source: source,
        drafts: { participantId: source } // by participantId
    };

    ot.createSession(HOST, {}, function(sessionId) {

        interview.sessionId = sessionId;
        interviews[interviewId] = interview;

        callback(interview, token);
    });
};
Example #2
0
File: index.js Project: meatcar/15s
exports.auth = function(req, res){
  var key = process.env.OPENTOK_KEY,
    secret = process.env.OPENTOK_SECRET,
    opentok = new OpenTok.OpenTokSDK(key, secret);

  // Check if we dont have an already made session.
  if (auth !== null) {
    res.json(auth);
    return;
  }

  opentok.createSession(function(result) {
    var session = result,
      token = opentok.generateToken({
      session_id: session,
      // publisher role to give people permission to publish
      role: OpenTok.RoleConstants.PUBLISHER
    });

    // save session info, and send it back.
    auth = {
      token: token,
      sessionId: session,
      key: key
    };
    res.json(auth);
  });
};
Example #3
0
 function getSessionIdAndToken(request, response, callback){
   if (request.query.room_id){
     var sessionId = request.query.room_id;
     var token = opentok.generateToken({session_id:sessionId, role:'publisher'});
     callback(response, sessionId, token);
   } else {
     opentok.createSession('', function(result){
       var sessionId = result;
       var token = opentok.generateToken({session_id:sessionId, role:'publisher'});
       callback(response, sessionId, token);
     });
   };
 }
Example #4
0
server = http.createServer(function(req, res){
  var path = url.parse(req.url).pathname;

  switch (path){
    case '/':
      res.writeHead(200, {'Content-Type': 'text/html'});
      res.write(
        renderExampleHTML(
          OPENTOK_API_KEY,
          globalSession.sessionId,
          ot.generateToken()
        )
      );
      res.end();
      break;

    case '/opentok-client.js':
      fs.readFile(__dirname + path, function(err, data){
        if (err) return send404(res);
        res.writeHead(200, {'Content-Type': 'text/javascript'})
        res.write(data, 'utf8');
        res.end();
      });
      break;

    default: send404(res);
  }
}),
Example #5
0
module.exports = function(config) {
    var apiKey = config.apiKey,
        ot = new opentok.OpenTokSDK(config.apiKey, config.apiSecret);

    return {
        index: function(req, res) {    
            ot.createSession('', {}, function(sessionId) {
                res.redirect('/s/' + sessionId);
            });
        },

        session: function(req, res) {
            var p_apiKey = req.param("apiKey") || apiKey,
                sessionId = req.params.sessionId,
                token = req.param("token") || 
                        ot.generateToken({sessionId: sessionId,role: "publisher"});

            res.render('index', {
                apiKey: p_apiKey,
                sessionId: sessionId,
                token: token,
                link: "http://" + req.headers.host + "/s/" + sessionId
            });
        }
    };
};
Example #6
0
var getToken = function (sessionid) {
    console.log('creating token for session ' + sessionid);
    var token = openTok.generateToken({
        session_id: sessionid
    });
    console.log('token: ' + token);
    return new ConnectionInfo(sessionid, token);
}
Example #7
0
function tokresponse(sessionId, req, res){
  // request for token per session, render stream
  var token = OpenTokObject.generateToken({session_id: sessionId});
  var data = {OpenTokKey:apikey, sessionId: sessionId, token:token};
  
  // point to correct template based on teacher parameter
  res.render('stream-' + ((req.params.teacher != undefined) ? req.params.teacher : 'student'), data);
}
Example #8
0
 ot.createSession('localhost', {}, function(session) {
   tables[id].otSession = session["sessionId"];
   users[id].otToken = ot.generateToken({
     'connection_data': "userid_" + new Date().getTime(),
     'role': "moderator"
   });
   socket.emit('session data', {session: tables[id].otSession, token: users[id].otToken});
   socket.emit('table info', {});
 });
Example #9
0
function returnRoomResponse( res, data, json ){
  data.apiKey = OTKEY;
  data.token = OpenTokObject.generateToken( {session_id: data.sid, role:OpenTokLibrary.RoleConstants.MODERATOR} );
  if( json == "" ){
    res.json( data );
  }else{
    res.render( 'room', data );
  }
}
Example #10
0
app.get('/', function(req, res){
  var _sessionId = ot.sessionId;
  var _token = ot.generateToken({
            'connection_data': "userid_" + new Date().getTime(),
            'role': "publisher"
          });

  res.render('index', { title: 'Hot Potato', token: _token, sessionId: _sessionId, apikey: OPENTOK_API_KEY });
});
Example #11
0
  socket.on('candidate arrived', function(data) {
    console.log('candidate connecting to table '+data.table);
  	sessionId = tables[data.table].otSession;
	  users[data.candidateId].otToken = ot.generateToken({
	    'connection_data': "userid_" + new Date().getTime(),
      'role': "moderator"
    });
    socket.join(data.table);
	  socket.emit('session data', {session: sessionId, token: users[data.candidateId].otToken});
	  io.sockets.in(data.table).emit('candidate info', {id : data.candidateId});
  });
Example #12
0
app.get("/:room", function(req, res){
  if(urlSessions[ req.params.room ] == undefined){
    OpenTokObject.createSession(function(err, sessionId){
      urlSessions[ req.params.room ] = sessionId;
      sendResponse( sessionId, res );
    });
  }else{
    sessionId = urlSessions[req.params.room];
    sendResponse( sessionId, res );
  }
});
Example #13
0
app.get('/enter', function (req, res) {
    console.log('entered' + req);
    if (session === '') {
        console.log('creating session');
        openTok.createSession(location, function (result) {
            session = result;
            res.json(getToken(session));
        });
    } else {
        res.json(getToken(session));
    }
});
Example #14
0
app.get('/archive/:archiveId', function (req, res) {
    ot.getArchive(req.param('archiveId'), function (err, archive) {
        if (err) {
            res.send(404, err.message);
        } else {
            res.render('archive', {
                name: archive.name,
                url: archive.url
            });
        }
    });
});
Example #15
0
 roomRef.once('value', function(dataSnapshot){
   var sidSnapshot = dataSnapshot.child('sid');
   var sid = sidSnapshot.val();
   if(!sid){
     OpenTokObject.createSession(function(sessionId){
       sidSnapshot.ref().set( sessionId );
       returnRoomResponse( res, { rid: rid, sid: sessionId }, path[1]);
     });
   }else{
     returnRoomResponse( res, { rid: rid, sid: sid }, path[1]);
   }
 });
Example #16
0
        session: function(req, res) {
            var p_apiKey = req.param("apiKey") || apiKey,
                sessionId = req.params.sessionId,
                token = req.param("token") || 
                        ot.generateToken({sessionId: sessionId,role: "publisher"});

            res.render('index', {
                apiKey: p_apiKey,
                sessionId: sessionId,
                token: token,
                link: "http://" + req.headers.host + "/s/" + sessionId
            });
        }
Example #17
0
app.get("/:room", function (req, res) {
  var room = req.params.room;
  room = room.toLowerCase();
  if(urlSessions[ room ] === undefined){
    OpenTokObject.createSession(function(sessionId){
      urlSessions[ room ] = sessionId;
      sendRoomResponse( sessionId, res, room, req.headers.host );
    }, {'p2p.preference':'enabled'});
  }else{
    sessionId = urlSessions[room];
    sendRoomResponse( sessionId, res, room, req.headers.host );
  }
});
Example #18
0
    ot.createSession('localhost', {}, function(session) {

      // Each user should be a moderator
      var data = {
        sessionId: session.sessionId,
        token: ot.generateToken({ 
          sessionId: session.sessionId,
          role: opentok.Roles.MODERATOR
        })
      };

      // Send initialization data back to the client
      socket.emit('initial', data);
    });
Example #19
0
function playerConnectToLobby(lobbyId,playerId){
	console.log("Player `"+playerId+"` attempting to connect to lobby `"+lobbyId+"`");
	if(!gameData[lobbyId]){
		console.log("LOBBY `"+lobbyId+"` DOESN'T EXIST!\n-");
		return false;
	}
	var ldPublic=gameData[lobbyId][0];
	var ldPrivate=gameData[lobbyId][1];

	if(ldPrivate.numPlayers>=PLAYERSPERLOBBY){
		console.log("Player `"+playerId+"` was denied entrance to lobby. (Reason: FULL)\n-");
		return false;
	}
	if(ldPrivate.isPublic && ldPrivate.numPlayers==PLAYERSPERLOBBY-1){
		delete publicLobbiesWithRoom[lobbyId];
		delete publicGamesWithRoom[lobbyId];
	}

	var team0Len=ldPublic.players[0].length;
	var team1Len=ldPublic.players[1].length;

  playerTokens[playerId]=ot.generateToken({
      'connection_data': playerId + new Date().getTime(),
      'role': 'publisher'
  });

	var playerTemplate=
	{
		environment:{},
		score:0,
		team:team0Len<=team1Len?0:1,
		playerId:playerId,
		displayName:playerDisplayNames[playerId],
		avatar:[0,0,0],
	};

	if(team0Len<=team1Len){
		ldPublic.players[0].push(playerTemplate);
		var t=0;
	}else{
		ldPublic.players[1].push(playerTemplate);
		var t=1;
	}
	ldPrivate.numPlayers=team0Len+team1Len+1;
	playerLobbyId[playerId]=lobbyId;
	console.log("Player `"+playerId+"` connected to lobby. Team "+t+"\n-");
	return playerTemplate;
}
Example #20
0
function newLobby(isPublic){
	var id=new Buffer(new Date().getTime()+"").toString('base64').slice(3,-2);
	for(var i=1;gameData[id];i++) id=new Buffer(new Date().getTime()+i+"").toString('base64').slice(3,-2);
	var pubVars=
	{//PUBLIC VARIABLES:
		environment:{},
    ot_session: null,
    test:1,
		players:[
			[],
			[]
		]
	};
	console.log(ot.createSession('localhost', {},function(pubVars){return function(session) {
      pubVars.ot_session = session.sessionId;
    }}(pubVars)));
	var priVars=
	{//PRIVATE VARIABLES:
		inLobby:true,
		isPublic:isPublic,
		numPlayers:0,
		gameName:""
	};
	gameData[id]=
	[pubVars,
	 priVars,
	{//FUNCTIONS:
		pubVars:pubVars,
		priVars:priVars,
		lobbyId:id,
		publish:function(){
			//publishes data to players
			var allPlayers=[].concat(this.pubVars.players[0],this.pubVars.players[1]);
			for(var i=0;i<allPlayers.length;i++){
				var playerSocket=playerSockets[allPlayers[i].playerId];
				if(playerSocket) playerSocket.emit('publish',this.pubVars);
				else console.log("ERROR BROKEN SOCKET - ERROR BROKEN SOCKET - ERROR BROKEN SOCKET - ERROR BROKEN SOCKET - ");
			}
		},
		end:function(){
			//ends current game
			setTimeout(function(lId){return function(){switchToRandomGame(lId);}}(this.lobbyId),1); //This timeout is to prevent stack overflows for long games
		}
	}];
	if(isPublic) publicLobbiesWithRoom[id]=true;
	console.log("New "+(isPublic?"public":"private")+" lobby `"+id+"` created.\n-");
	return id;
}
Example #21
0
File: index.js Project: meatcar/15s
  opentok.createSession(function(result) {
    var session = result,
      token = opentok.generateToken({
      session_id: session,
      // publisher role to give people permission to publish
      role: OpenTok.RoleConstants.PUBLISHER
    });

    // save session info, and send it back.
    auth = {
      token: token,
      sessionId: session,
      key: key
    };
    res.json(auth);
  });
Example #22
0
function createSession(req, res) {
  // avoid students to guess the url of the teacher
  if(req.params.teacher && req.params.teacher != 'teacher') {
    res.send(404);
  }
  // render stream pages
  if (urlSessions[req.params.room] == undefined) {
    OpenTokObject.createSession(function(sessionId){
      urlSessions[req.params.room] = sessionId;
      tokresponse(sessionId, req, res);
    });
  } else {
    sessionId = urlSessions[req.params.room];
    tokresponse(sessionId, req, res);
  }
}
Example #23
0
 socket.get('id', function(err, id) {
   users[id].type = 1;
   tables[id] = {};
   socket.join(id);
   console.log('starting new table '+id);
   console.log(tables[id]);
   ot.createSession('localhost', {}, function(session) {
     tables[id].otSession = session["sessionId"];
     users[id].otToken = ot.generateToken({
       'connection_data': "userid_" + new Date().getTime(),
       'role': "moderator"
     });
     socket.emit('session data', {session: tables[id].otSession, token: users[id].otToken});
     socket.emit('table info', {});
   });
 });
Example #24
0
				ot.createSession('localhost',{}, function(session) {
					
					//Each user should be a moderator for their own session
					var data = {
						sessionId: session.sessionId,
						token: ot.generateToken({
							sessionId: session.sessionId,
							role: opentok.Roles.MODERATOR
						})
					};
					
					// Send initialization data back to the client
					client.send({
						event: 'initial',
						data: data
					});
				});
Example #25
0
                    ot.createSession(tokHost, {}, function(session) {
                        // Each user should be a moderator
                        var data = {
                            sessionId: session.sessionId,
                            token: ot.generateToken({
                                sessionId: session.sessionId,
                                role: opentok.Roles.MODERATOR
                            })
                        };
                        //socket.set('opentok', data);

                        // Send initialization data back to the client
                        socket.emit('message', {
                            event: 'initial',
                            data: data
                        });
                    });
Example #26
0
// Sends the session info back to the client for the client to join
function enterSession(session, client) {
    // Construct info object to pass back to client then send it
    var opentok_info = {
        sessionId: session.sessionId,
        apiKey: OPENTOK_API_KEY,
        token: ot.generateToken()
    }
    client.send(opentok_info);
 
    // Create array to hold all the clients in the session
    if (!session.clients) {
        session.clients = new Array();
    }
 
    // Add the client to the session
    session.clients.push(client.sessionId);
    session_map[client.sessionId] = session;    // Use map later to identify what session client was in
}
Example #27
0
app.get("/:rid", function( req, res ){
  // make sure that we are always in https
  console.log( req.url );
  if(req.header('x-forwarded-proto')!="https" && process.env.NODE_ENV == "production" ){
    res.redirect( 'https://opentokrtc.com'+req.url );
    return;
  }

  // find request format, json or html?
  var path = req.params.rid.split(".json");
  var rid = path[0];

  // Generate sessionId if there are no existing session Id's
  if( !rooms[rid] ){
    OpenTokObject.createSession(function(sessionId){
      rooms[rid] = sessionId;
      returnRoomResponse( res, { rid: rid, sid: sessionId }, path[1]);
    });
  }else{
    returnRoomResponse( res, { rid: rid, sid: rooms[rid] }, path[1]);
  }
});
Example #28
0
    ot_sessions = new Array();      // Array for holding all sessions we have generated
 
// Finds an available session for the client to connect to
function getSession(client) {
    var session;
    // Look through all sessions to find a session that has less than the max number of sessions
    // NOTE: We start searching from the top of the array since it is more likely a non-full session is there
    for (var i = ot_sessions.length - 1; i >= 0; i--) {
        var tmp_session = ot_sessions[i];
        if (tmp_session.clients.length < MAX_SESSION_CONNECTIONS) {
            session = tmp_session;
            break;
        }
    }
 
    if (!session) {
        // If we didn't find a session, generate one and enter it
        ot.createSession('localhost',{},function(session) {
            ot_sessions.push(session);
            enterSession(session,client);
        })
    } else {
        // Otherwise enter the session we found
        enterSession(session, client);
    }
}
Example #29
0
 myRootRef.once( "value", function( snapshot ){
   var info = snapshot.val();
   if( !info ){
     res.redirect('/');
     return
   }
   console.log( info );
   if( info.sid && info.sid.length > 3 ){
     console.log( "session id generated" );
     console.log( info.sid );
     returnRoomResponse( res, { rid: rid, sid: info.sid }, path[1]);
   }else{
     console.log(" no session id found ");
     OpenTokObject.createSession(function(sessionId){
       console.log( "sessionId generated" );
       console.log( sessionId );
       myRootRef.child( "sid" ).set( sessionId, function(){
         console.log( "set session id" );
         console.log( sessionId );
         returnRoomResponse( res, { rid: rid, sid: sessionId }, path[1]);
       });
     });
   }
 });
Example #30
0
                 socket.get('socket_id', function(err, socket_id) {
                     sid = socket_id;
                     
                     // Create a "user" data object for me
                     var me = {
                         sessionId: message.data.sessionId,
                         clientId: sid
                     };
                     
                     console.log("----------------------------------> meeee <------------------------------");
                     console.log();
                 
                     console.log(me);
                     tmp_socket = manager.sockets[sid];
                     var partner;
                     var partnerClient;
                     // Look for a user to partner with in the list of solo users
                     
                     for (var i = 0; i < soloUsers.length; i++) {
                         var tmpUser = soloUsers[i];
                         // Make sure our last partner is not our new partner
                         if (tmp_socket.partner != tmpUser && tmp_socket != tmpUser) {
                             // Get the socket client for this user
 
                             //let's try this approach if clientId has auth id for socket we should be very good!
 
                             // In that case we have partnerClient= Socket do parceiro! Um simples partner.emit(message, subscribe) makes us happy
                             partnerClient = manager.sockets[tmpUser.clientId];
                             // Remove the partner we found from the list of solo users
                             soloUsers.splice(i, 1);
                             // If the user we found exists...
                             if (partnerClient) {
                                 // Set as our partner and quit the loop today
                                 partner = tmpUser;
                                 break;
                             }
                         }
                         else{
                             //isto nao devia acontecer na primeira iteração 
                             console.log("failllllllllllllllllllllll");
                         }
                     }
                     
                     // If we found a partner...
                     if (partner) {
                         //socket.emit('debug')
                         
                         //     Tell myself to subscribe to my partner
                         socket.emit('message', {
                             event: 'subscribe',
                             data: {
                                 sessionId: partner.sessionId,
                                 token: ot.generateToken({
                                     sessionId: partner.sessionId,
                                     role: opentok.Roles.SUBSCRIBER
                                 })
                             }
                         });
                         // Tell my partner to subscribe to me
                         partnerClient.emit('message', {
                             event: 'subscribe',
                             data: {
                                 sessionId: me.sessionId,
                                 token: ot.generateToken({
                                     sessionId: me.sessionId,
                                     role: opentok.Roles.SUBSCRIBER
                                 })
                             }
                         });
                         // Mark that my new partner and me are partners
                         tmp_socket.partner = partner;
                         partnerClient.partner = me;
                         // 	Mark that we are not in the list of solo users anymore
                         socket.inList = false;
                         partnerClient.inList = false;
                         //assign a room to be used to chat on
                         
                         //room id = both socket ids plus a random number from 0 to 10000
                         var roomId = partner.sessionId + me.sessionId + "|" + Math.floor((Math.random()*10000)+1);
                         socket.join(roomId);
                         partnerClient.join(roomId);
                         console.log("Generated room ID:"+roomId);
                         //TODO objectify these methodsm very unclean code here
                         socket.set('chatRoomId', roomId, function(){
                         	socket.emit('message', {
                         		event: 'chatStatus',
                         		data: {
                         			status: 'online'
                         	}
                         	})
                         });
                         
                         partnerClient.set('chatRoomId', roomId, function(){
                         	partnerClient.emit('message', {
                         		event: 'chatStatus',
                         		data: {
                         			status: 'online'
                         	}
                         	})
                         });
                     }
                     else {
                         // Delete that I had a partner if I had one
                         if (tmp_socket.partner) {
                             delete tmp_socket.partner;
                         }
                         // Add myself to list of solo users if I'm not in the list
                         if (!socket.inList) {
                             socket.inList = true;
                             soloUsers.push(me);
                         }
                         // Tell myself that there is nobody to chat with right now
                         socket.emit('message', {
                             event: 'empty'
                         });
                         
                         //TODO put this code in a method..
                     	//make you leave the room for chatting if you were in one
                         socket.get('chatRoomId', function(err, chatRoomId)
                         	{
                         		socket.emit('message', {
                         			event: 'chatStatus',
                         			data: {
                         				status:'offline'
                         		}
                         		});
                         		
                         		if (err)
                         			{
                         			//TODO ?
                         			console.log('Error getting chatRoomId. ' + err);
                         			return;
                         			}
                         		socket.leave(chatRoomId);
                         		socket.del('chatRoomId');
                         	});
                     }
                     });