| (function () { |
| 'use strict'; |
| |
| const express = require('express'); |
| const app = express(); |
| const config = require('./config/config.js').gateway; |
| const bodyParser = require('body-parser'); |
| const cors = require('cors'); |
| const socketIo = require('./controllers/websocket.js'); |
| const logger = require('./config/logger.js'); |
| |
| // Apply middlewares |
| app.use(cors()); |
| app.use(bodyParser.json()); |
| |
| // Load routes |
| require('./routes/core_proxy.js')(app); |
| |
| app.get('/', function(req, res) { |
| res.send('Hello world'); |
| }); |
| |
| const startServer = (port) => { |
| |
| // if is running just return it |
| if(app.server) { |
| return app.server; |
| } |
| |
| const server = app.listen(port || config.port, function() { |
| logger.info(`Express is listening to http://localhost:${port || config.port}`); |
| |
| // once server is ready setup WebSocket |
| socketIo.create(server); |
| |
| // start redis |
| require('./controllers/redis.js'); |
| }); |
| app.server = server; |
| return server; |
| }; |
| |
| const stopServer = () => { |
| if(app.server) { |
| app.server.close(); |
| } |
| } |
| |
| if(!module.parent) { |
| startServer(); |
| } |
| |
| module.exports = { |
| app: app, |
| start: startServer, |
| stop: stopServer |
| }; |
| })(); |