smartfacecloud-emulator-dispatcher
Version:
Handles Emulator Dispatcher Part of SmartfaceCloud
62 lines (58 loc) • 1.91 kB
JavaScript
/**
* @typedef {Object} getCombinedWSSResult
* @prop {WebSocketServer} wss - Object created to handle ws connections
* @prop {http.Server} server - HTTP Server object created on the way
* @prop {ExpressApp} app - Provided app value or newly created one
*
*
* Creates a combined WebSocketServer with Express Server
* @param {WebSocketServer} WebSocketServer - class of WebSocketServer
* @param {express} express - library of express
* @param {Object|number} options - WSS options or the port number; server value will be replaced
* @param {ExpressApp} app - (Optional) Previously created express app; If empty one will be created automatically
* @return {getCombinedWSSResult} - wss and all created artifacts along the way
*/
const LogToConsole = require("../common/LogToConsole");
function getCombinedWSS(WebSocketServer, express, options, app) {
const execSync = require('child_process').execSync;
var http = require("http");
app = app || express();
var server = http.createServer(app);
var port;
var log = new LogToConsole(options.logToConsole, '[HTTP]').log;
if (typeof options === "number") {
port = options;
options = {};
}
else {
port = options.port;
delete options.port;
}
if (global.v8debug) {
try {
execSync('fuser -k 8081/tcp');
}
catch (ex) {
// do nothing; process is not running; everything is OK
}
}
server.on("error", function(err) {
if (global.v8debug) {
debugger;
}
else {
log("**ERROR**", err);
throw err;
}
});
server.listen(port);
options.server = server;
log("Server listening on", port);
var wss = new WebSocketServer(options);
return {
wss: wss,
server: server,
app: app
};
}
module.exports = getCombinedWSS;