2021-04-03 17:46:54 +00:00
|
|
|
import http from 'http'
|
|
|
|
import express, { Application } from 'express'
|
2021-04-24 16:08:08 +00:00
|
|
|
import { Server as WsServer } from 'ws'
|
2021-04-03 17:46:54 +00:00
|
|
|
import initDebug from 'debug'
|
|
|
|
|
|
|
|
import { registerMiddlewares } from './middlewares'
|
|
|
|
|
|
|
|
import indexRouter from './routes'
|
|
|
|
|
|
|
|
import { normalizePort } from './helpers/port'
|
|
|
|
import { getErrorCb, getListeningCb } from './helpers/server-callbacks'
|
|
|
|
import { registerApis } from './routes/api/register'
|
2021-05-11 19:45:24 +00:00
|
|
|
import { registerWebsocket } from './websocket'
|
2021-04-03 17:46:54 +00:00
|
|
|
|
|
|
|
const PORT = normalizePort(process.env.PORT || '6595')
|
|
|
|
|
|
|
|
const debug = initDebug('deemix-gui:server')
|
2021-04-24 16:03:27 +00:00
|
|
|
export const app: Application = express()
|
2021-05-11 19:45:24 +00:00
|
|
|
export const wss = new WsServer({ noServer: true })
|
2021-04-03 17:46:54 +00:00
|
|
|
const server = http.createServer(app)
|
|
|
|
|
|
|
|
/* === Middlewares === */
|
|
|
|
registerMiddlewares(app)
|
|
|
|
|
|
|
|
/* === Routes === */
|
|
|
|
app.use('/', indexRouter)
|
|
|
|
|
|
|
|
/* === APIs === */
|
|
|
|
registerApis(app)
|
|
|
|
|
|
|
|
/* === Config === */
|
|
|
|
app.set('port', PORT)
|
|
|
|
|
|
|
|
/* === Server port === */
|
2021-04-24 16:03:27 +00:00
|
|
|
if (process.env.NODE_ENV !== 'test') {
|
|
|
|
server.listen(PORT)
|
|
|
|
}
|
2021-04-03 17:46:54 +00:00
|
|
|
|
2021-05-11 19:45:24 +00:00
|
|
|
registerWebsocket(wss)
|
2021-05-11 19:06:45 +00:00
|
|
|
|
2021-04-03 17:46:54 +00:00
|
|
|
/* === Server callbacks === */
|
2021-04-18 10:11:51 +00:00
|
|
|
server.on('upgrade', (request, socket, head) => {
|
2021-05-11 19:06:45 +00:00
|
|
|
wss.handleUpgrade(request, socket, head, socket => {
|
|
|
|
wss.emit('connection', socket, request)
|
2021-04-24 16:03:27 +00:00
|
|
|
})
|
2021-04-18 10:11:51 +00:00
|
|
|
})
|
2021-04-03 17:46:54 +00:00
|
|
|
server.on('error', getErrorCb(PORT))
|
|
|
|
server.on('listening', getListeningCb(server, debug))
|