2018-02-15 19:16:54 +00:00
|
|
|
const path = require('path')
|
|
|
|
const express = require('express')
|
|
|
|
const webpack = require('webpack')
|
2018-03-05 00:30:17 +00:00
|
|
|
const socketio = require('socket.io')
|
|
|
|
const { createServer } = require('http')
|
2018-02-15 19:16:54 +00:00
|
|
|
const webpackDevMiddleware = require('webpack-dev-middleware')
|
2018-03-04 02:49:11 +00:00
|
|
|
const apiProxyMiddleware = require('./apiProxyMiddleware')
|
2018-03-05 00:30:17 +00:00
|
|
|
const realtime = require('./realtime')
|
2018-03-04 02:49:11 +00:00
|
|
|
const port = process.env.PORT || 3000
|
2018-02-15 19:16:54 +00:00
|
|
|
|
2018-03-05 00:30:17 +00:00
|
|
|
const app = express()
|
|
|
|
const server = createServer(app)
|
|
|
|
const io = socketio(server)
|
|
|
|
realtime(io) // sets up the socketio event listeners
|
2018-02-15 19:16:54 +00:00
|
|
|
|
2018-03-05 00:30:17 +00:00
|
|
|
// serve the whole public folder as static files
|
2018-02-15 19:16:54 +00:00
|
|
|
app.use(express.static(path.join(__dirname, 'public')))
|
|
|
|
|
2018-03-05 00:30:17 +00:00
|
|
|
const config = require('./webpack.config.js')
|
|
|
|
const compiler = webpack(config)
|
2018-02-15 19:16:54 +00:00
|
|
|
// Tell express to use the webpack-dev-middleware and use the webpack.config.js
|
|
|
|
// configuration file as a base.
|
|
|
|
app.use(webpackDevMiddleware(compiler, {
|
|
|
|
publicPath: config.output.publicPath
|
2018-03-04 02:49:11 +00:00
|
|
|
}))
|
|
|
|
|
2018-03-05 00:30:17 +00:00
|
|
|
// pass XMLHttpRequests
|
|
|
|
// through to the API
|
|
|
|
// anything which is the UI wanting to make requests to the API
|
2018-03-04 02:49:11 +00:00
|
|
|
app.use(apiProxyMiddleware)
|
2018-02-15 19:16:54 +00:00
|
|
|
|
2018-03-05 00:30:17 +00:00
|
|
|
// for any normal route
|
2018-02-15 19:16:54 +00:00
|
|
|
app.get('*', function (req, res) {
|
2018-03-05 00:30:17 +00:00
|
|
|
// respond with the same html file
|
|
|
|
// since the whole UI technically boots
|
|
|
|
// from the React app and the javascript
|
|
|
|
res.sendFile(path.join(__dirname, 'public/index.html'))
|
2018-02-15 19:16:54 +00:00
|
|
|
})
|
|
|
|
|
2018-03-04 02:49:11 +00:00
|
|
|
// Serve the files on set port or port 3000.
|
2018-03-05 00:30:17 +00:00
|
|
|
server.listen(port, function () {
|
2018-03-04 02:49:11 +00:00
|
|
|
console.log('Metamaps listening on port ' + port + '\n')
|
2018-02-15 19:16:54 +00:00
|
|
|
});
|