const createSession = options => new Promise((resolve, reject) => { const setActiveSession = (session) => { activeSession = session; return Promise.resolve(session); }; options = (typeof options === 'undefined') ? defaultSessionOptions : options; OT.createSessionAsync(options) .then(setActiveSession) .then(resolve) .catch(reject); })
function createToken (sessionId, userName, userType = 'student', role = 'publisher') { try { const token = OT.generateToken(sessionId, { role: role, data: JSON.stringify({ userName: userName, userType: userType }), expireTime: Math.round((Date.now() / 1000) + (60 * 60)) // 1 hour from now() }) return Promise.resolve(token) } catch (e) { return Promise.reject(e) } }
/** * Create an OpenTok token * @param {String} userType Host, guest, or viewer * @param [String] name Name to display in chat * @returns {String} */ const createToken = (userType, name, isFocused) => { let options = tokenOptions(userType) options.data = `username=${name}` if (isFocused) { options.initialLayoutClassList = ['focus'] } return OT.generateToken(activeSession.sessionId, options) }
function createSession (mediaMode = 'routed') { return new Promise(function (resolve, reject) { OT.createSession({ mediaMode: mediaMode }, (err, session) => { if (err) { console.log('Error creating OpenTok session', err) return reject(err) } return resolve(session) }) }) }
OT.createSession({ mediaMode: 'routed' }, (err, session) => { if (err) { console.log('Error creating OpenTok session', err) process.exit(1) } if (!process.env.SECURE) { // Bootstrap and start HTTP server for app bootstrap(session).listen(PORT, () => { console.log(`Server started on port ${PORT}`) }) } else { const https = require('https') const fs = require('fs') const tlsOpts = { key: fs.readFileSync('key.pem'), cert: fs.readFileSync('cert.pem') } https.createServer(tlsOpts, bootstrap(session)).listen(PORT, () => { console.log(`Listening on secure port ${PORT}...`) }) } })
var id = req.query.id || createId() try { const token = OT.generateToken(session.sessionId, { role: 'publisher', data: id,