bigbluebutton-Github/labs/bbb-webrtc-sfu/server.js

75 lines
2.1 KiB
JavaScript
Executable File

/*
* Lucas Fialho Zawacki
* Paulo Renato Lanzarin
* (C) Copyright 2017 Bigbluebutton
*
*/
const ConnectionManager = require('./lib/connection-manager/ConnectionManager');
const HttpServer = require('./lib/connection-manager/HttpServer');
const server = new HttpServer();
const WebsocketConnectionManager = require('./lib/connection-manager/WebsocketConnectionManager');
const cp = require('child_process');
const Logger = require('./lib/utils/Logger');
let screenshareProc = cp.fork('./lib/screenshare/ScreenshareProcess', {
// Pass over all of the environment.
env: process.ENV,
// Share stdout/stderr, so we can hear the inevitable errors.
silent: false
});
let videoProc = cp.fork('./lib/video/VideoProcess.js', {
// Pass over all of the environment.
env: process.ENV,
// Share stdout/stderr, so we can hear the inevitable errors.
silent: false
});
let onMessage = function (message) {
Logger.info('event','child message',this.pid,message);
};
let onError = function(e) {
Logger.error('event','child error',this.pid,e);
};
let onDisconnect = function(e) {
Logger.info(e);
Logger.info('event','child disconnect',this.pid,'killing...');
this.kill();
};
screenshareProc.on('message',onMessage);
screenshareProc.on('error',onError);
screenshareProc.on('disconnect',onDisconnect);
videoProc.on('message',onMessage);
videoProc.on('error',onError);
videoProc.on('disconnect',onDisconnect);
process.on('SIGTERM', process.exit)
process.on('SIGINT', process.exit)
process.on('uncaughtException', (error) => {
Logger.error('[MainProcess] Uncaught exception', error.stack);
process.exit('1');
});
// Added this listener to identify unhandled promises, but we should start making
// sense of those as we find them
process.on('unhandledRejection', (reason, p) => {
Logger.error('[MainProcess] Unhandled Rejection at: Promise', p, 'reason:', reason);
});
const CM = new ConnectionManager(screenshareProc, videoProc);
let websocketManager = new WebsocketConnectionManager(server.getServerObject(), '/bbb-webrtc-sfu');
CM.setHttpServer(server);
CM.addAdapter(websocketManager);
CM.listen(() => {
Logger.info("[MainProcess] Server started");
});