Working gateway

Change-Id: I8ca690fe9d1b7f8e20b438df1ddd48d6b2f99326
diff --git a/src/server.js b/src/server.js
new file mode 100644
index 0000000..da541ce
--- /dev/null
+++ b/src/server.js
@@ -0,0 +1,58 @@
+(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 = () => {
+
+    // if is running just return it
+    if(app.server) {
+      return app.server;
+    }
+
+    const server =  app.listen(config.port, function() {
+      logger.info(`Express is listening to http://localhost:${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
+  };
+})();
\ No newline at end of file