This repository was archived by the owner on Dec 30, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
55 lines (44 loc) · 1.35 KB
/
index.js
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
if (process.env.NODE_ENV !== 'production') {
require('dotenv').config();
}
const ws = require('websocket-stream');
const EventEmitter = require('events');
const config = require('./config');
const DBLoader = require('./components/loaders/db');
const MQTTLoader = require('./components/loaders/mqtt');
const WebLoader = require('./components/loaders/web');
/**
* @property {Object} config
* @property {Object<string, Object>} modules
* @property {Auth} auth
* @property {Express} express
* @property {Router} apiRouter
* @property {aedes.Aedes} aedes
* @property {Sequelize} sequelize
*/
class Core extends EventEmitter {
constructor() {
super();
this.config = config;
DBLoader(this);
MQTTLoader(this);
WebLoader(this);
this.sequelize.sync();
this.emit('core.init');
}
}
const core = new Core();
const httpServer = require('http').createServer();
// Start servers
require('net')
.createServer(core.aedes.handle)
.listen(config.ports.MQTT, () =>
console.log(`MQTT server listening on port ${config.ports.MQTT}`)
);
ws.createServer({ server: httpServer }, core.aedes.handle);
httpServer.listen(config.ports.MQTT_WS, () =>
console.log(`Websocket MQTT server listening on port ${config.ports.MQTT_WS}`)
);
core.express.listen(config.ports.HTTP, () =>
console.log(`HTTP server listening on port ${config.ports.HTTP}`)
);