Use REST eduTurn

This commit is contained in:
Håvar Aambø Fosstveit
2020-03-23 21:41:34 +01:00
parent cc4053ebea
commit 71b90dfb6c
5 changed files with 88 additions and 41 deletions
+13
View File
@@ -32,6 +32,19 @@ module.exports =
}
},
*/
// URI and key for requesting geoip-based TURN server closest to the client
turnAPIKey : 'examplekey',
turnAPIURI : 'https://example.com/api/turn',
// Backup turnservers if REST fails or is not configured
backupTurnServers : [
{
urls : [
'turn:turn.example.com:443?transport=tcp'
],
username : 'example',
credential : 'example'
}
],
redisOptions : {},
// session cookie secret
cookieSecret : 'T0P-S3cR3t_cook!e',
+42 -2
View File
@@ -1,4 +1,5 @@
const EventEmitter = require('events').EventEmitter;
const axios = require('axios');
const Logger = require('./Logger');
const Lobby = require('./Lobby');
const config = require('../config/config');
@@ -319,7 +320,7 @@ class Room extends EventEmitter
}
}
_peerJoining(peer)
async _peerJoining(peer)
{
peer.socket.join(this._roomId);
@@ -333,7 +334,46 @@ class Room extends EventEmitter
this._peers[peer.id] = peer;
this._handlePeer(peer);
this._notification(peer.socket, 'roomReady');
let turnServers;
if ('turnAPIURI' in config)
{
try
{
const { data } = await axios.get(
config.turnAPIURI,
{
params : {
'uri_schema' : 'turn',
'transport' : 'tcp',
'ip_ver' : 'ipv4',
'servercount' : '2',
'api_key' : config.turnAPIKey,
'ip' : peer.socket.request.connection.remoteAddress
}
});
turnServers = [ {
urls : data.uris,
username : data.username,
credential : data.password
} ];
}
catch (error)
{
if ('backupTurnServers' in config)
turnServers = config.backupTurnServers;
logger.error('_peerJoining() | error on REST turn [error:"%o"]', error);
}
}
else if ('backupTurnServers' in config)
{
turnServers = config.backupTurnServers;
}
this._notification(peer.socket, 'roomReady', { turnServers });
}
_handlePeer(peer)
+1
View File
@@ -12,6 +12,7 @@
},
"dependencies": {
"awaitqueue": "^1.0.0",
"axios": "^0.19.2",
"base-64": "^0.1.0",
"body-parser": "^1.19.0",
"colors": "^1.4.0",