Have a global try-catch in the server

auto_join_3.3
Håvar Aambø Fosstveit 2020-05-07 12:20:24 +02:00
parent 457d679382
commit 7e91609276
2 changed files with 46 additions and 57 deletions

View File

@ -7,7 +7,7 @@
"license": "MIT", "license": "MIT",
"main": "lib/index.js", "main": "lib/index.js",
"scripts": { "scripts": {
"start": "DEBUG=${DEBUG:='*mediasoup* *INFO* *WARN* *ERROR*'} INTERACTIVE=${INTERACTIVE:='true'} node server.js", "start": "node server.js",
"connect": "node connect.js", "connect": "node connect.js",
"lint": "eslint -c .eslintrc.json --ext .js *.js lib/" "lint": "eslint -c .eslintrc.json --ext .js *.js lib/"
}, },

View File

@ -127,69 +127,58 @@ let oidcStrategy;
async function run() async function run()
{ {
// Open the interactive server. try
await interactiveServer(rooms, peers);
// start Prometheus exporter
if (config.prometheus)
{ {
await promExporter(rooms, peers, config.prometheus); // Open the interactive server.
} await interactiveServer(rooms, peers);
if (typeof(config.auth) === 'undefined') // start Prometheus exporter
{ if (config.prometheus)
logger.warn('Auth is not configured properly!');
}
else
{
await setupAuth();
}
// Run a mediasoup Worker.
await runMediasoupWorkers();
// Run HTTPS server.
await runHttpsServer();
// Run WebSocketServer.
await runWebSocketServer();
// eslint-disable-next-line no-unused-vars
function errorHandler(err, req, res, next)
{
const trackingId = uuidv4();
res.status(500).send(
`<h1>Internal Server Error</h1>
<p>If you report this error, please also report this
<i>tracking ID</i> which makes it possible to locate your session
in the logs which are available to the system administrator:
<b>${trackingId}</b></p>`
);
logger.error(
'Express error handler dump with tracking ID: %s, error dump: %o',
trackingId, err);
}
app.use(errorHandler);
// Log rooms status every 30 seconds.
setInterval(() =>
{
for (const room of rooms.values())
{ {
room.logStatus(); await promExporter(rooms, peers, config.prometheus);
} }
}, 120000);
// check for deserted rooms if (typeof(config.auth) === 'undefined')
setInterval(() =>
{
for (const room of rooms.values())
{ {
room.checkEmpty(); logger.warn('Auth is not configured properly!');
} }
}, 10000); else
{
await setupAuth();
}
// Run a mediasoup Worker.
await runMediasoupWorkers();
// Run HTTPS server.
await runHttpsServer();
// Run WebSocketServer.
await runWebSocketServer();
const errorHandler = (err, req, res, next) =>
{
const trackingId = uuidv4();
res.status(500).send(
`<h1>Internal Server Error</h1>
<p>If you report this error, please also report this
<i>tracking ID</i> which makes it possible to locate your session
in the logs which are available to the system administrator:
<b>${trackingId}</b></p>`
);
logger.error(
'Express error handler dump with tracking ID: %s, error dump: %o',
trackingId, err);
};
// eslint-disable-next-line no-unused-vars
app.use(errorHandler);
}
catch (error)
{
logger.error('run() [error:"%o"]', error);
}
} }
function statusLog() function statusLog()