You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
filepizza/lib/ice.js

45 lines
1.1 KiB
JavaScript

var twilio = require("twilio");
var winston = require("winston");
if (process.env.TWILIO_SID && process.env.TWILIO_TOKEN) {
var twilioSID = process.env.TWILIO_SID;
var twilioToken = process.env.TWILIO_TOKEN;
var client = twilio(twilioSID, twilioToken);
winston.info("Using Twilio TURN service");
} else {
var client = null;
}
var DEFAULT_ICE_SERVERS = [
{
urls: "stun:stun.l.google.com:19302"
}
];
var CACHE_LIFETIME = 5 * 60 * 1000; // 5 minutes
var cachedPromise = null;
function clearCache() {
cachedPromise = null;
}
exports.getICEServers = function() {
if (client == null) return Promise.resolve(DEFAULT_ICE_SERVERS);
if (cachedPromise) return cachedPromise;
cachedPromise = new Promise(function(resolve, reject) {
client.tokens.create({}, function(err, token) {
if (err) {
winston.error(err);
return resolve(DEFAULT_ICE_SERVERS);
}
winston.info("Retrieved ICE servers from Twilio");
setTimeout(clearCache, CACHE_LIFETIME);
resolve(token.ice_servers);
});
});
return cachedPromise;
};