-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathserver.js
More file actions
executable file
·121 lines (93 loc) · 3.31 KB
/
server.js
File metadata and controls
executable file
·121 lines (93 loc) · 3.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#!/bin/env node
const http = require('http');
const path = require('path');
const express = require('express');
const config = require('../common/config');
const AppServer = require('./AppServer.js');
// Patch console.x methods in order to add timestamp information
require("console-stamp")(console, {pattern: "mm/dd/yyyy HH:MM:ss.l"});
/**
* Define the sample server.
*/
var MainServer = function () {
// Scope.
var self = this;
/* ================================================================ */
/* Helper functions. */
/* ================================================================ */
/**
* Set up server env variables/defaults.
*/
self.setupVariables = function () {
// Set the environment variables we need.
self.port = process.env.LISTEN_PORT || config.LISTEN_PORT;
};
/**
* terminator === the termination handler
* Terminate server on receipt of the specified signal.
*/
self.terminator = function (sig) {
if (typeof sig === "string") {
console.log('Received %s - terminating sample server ...', sig);
process.exit(1);
}
console.log('Node server stopped.');
};
/**
* Setup termination handlers (for exit and a list of signals).
*/
self.setupTerminationHandlers = function () {
// Process on exit and signals.
process.on('exit', function() { self.terminator(0); });
['SIGHUP', 'SIGINT', 'SIGQUIT', 'SIGILL', 'SIGTRAP', 'SIGABRT',
'SIGBUS', 'SIGFPE', 'SIGUSR1', 'SIGSEGV', 'SIGUSR2', 'SIGTERM'
].forEach(function(element) {
process.on(element, function() { self.terminator(element); });
});
};
/* ================================================================ */
/* App server functions (main app logic here). */
/* ================================================================ */
/**
* Initialize the server (express) and create the routes and register
* the handlers.
*/
self.initializeServer = function () {
// nothing to go here for now
};
/**
* Initializes the server
*/
self.initialize = function () {
self.setupVariables();
self.setupTerminationHandlers();
// Create the express server and routes.
self.initializeServer();
};
/**
* Start the server
*/
self.start = function () {
// Configure express
const app = express();
app.use(express.static(path.join(__dirname, '../build')));
const httpServer = http.createServer(app);
const options = {
cors: {
origin: (process.env.ENV == 'prod' ? 'https://' : "http://") + config.HOST,
methods: ["GET", "POST"]
}
};
self.io = require('socket.io')(httpServer, options);
// The app httpServer contains all the logic and state of the WebSocket app
self.appServer = new AppServer(self.io);
httpServer.listen(self.port);
console.log("SquareOff listening for connections on port: ", self.port);
};
};
/**
* main(): Main code.
*/
var mainServer = new MainServer();
mainServer.initialize();
mainServer.start();