-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.ts
55 lines (48 loc) · 1.69 KB
/
server.ts
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
import * as mongoose from 'mongoose';
import app = require('./app');
import ws = require('./api/common/ws-server');
import Scheduler = require('./api/common/scheduler');
import Recommender = require('./api/common/recommender');
import https = require('https');
import fs = require('fs');
// Load all models.
require('./api/models/index');
// Connect to the database.
const auth = process.env.MONGODB_USER || process.env.MONGODB_PASSWORD ?
`${process.env.MONGODB_USER}:${process.env.MONGODB_PASSWORD}@` : '';
const host = process.env.MONGODB_HOST;
const port = process.env.MONGODB_PORT;
const name = !module.parent
? process.env.MONGODB_NAME
: process.env.MONGODB_NAME + 'test';
const uriwa = `mongodb://${host}:${port}/${name}`;
const uri = `mongodb://${auth}${host}:${port}/${name}`;
mongoose.connect(uri, {
keepAlive: true,
useNewUrlParser: true,
useFindAndModify: false
}).then(() => {
console.info(`System connected to the database @ ${uriwa}.`);
Scheduler.scheduleAllAuctions();
}).catch((error) => {
console.error(`System failed to connect to the database @ ${uriwa}.`, error);
});
const server_port:number = Number(process.env.PORT);
// don't run server on tests
if (!module.parent) {
// start the server on https
const server = https.createServer({
key: fs.readFileSync(process.env.SSL_KEY_FILE),
cert: fs.readFileSync(process.env.SSL_CERT_FILE),
passphrase: process.env.SSL_PASSPHRASE
}, app);
server.listen(server_port, process.env.HOST, () => {
console.info(`Server started in ${process.env.NODE_ENV} mode on port ${process.env.PORT}.`);
});
// Start WebSocket server
ws.mount(server);
ws.start();
// start recommender
Recommender.initialize();
}
export = app;