-
Notifications
You must be signed in to change notification settings - Fork 3
/
server.js
51 lines (42 loc) · 1.3 KB
/
server.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
import dotenv from 'dotenv'
dotenv.config()
import { WebSocketServer } from 'ws'
import { handleConnection, startSendingClientUpdates } from './server/websockets/connectionHandler.js'
import fs from 'fs'
import Router from 'express-promise-router'
import viteConfig from './vite.config.js'
import { createServer } from 'vite'
import express from 'express'
import http from 'http'
const router = Router()
const app = express()
if (process.env.NODE_ENV === 'development') {
const vite = await createServer({
configFile: false,
server: {
middlewareMode: true,
},
...viteConfig,
})
router.use(vite.middlewares)
} else {
app.use(express.static('dist'))
}
router.get('/', async (req, res) => {
let html = fs.readFileSync('index.html', 'utf-8')
if (process.env.NODE_ENV === 'development') {
html = await vite.transformIndexHtml(req.url, html)
}
res.send(html)
})
router.use('*', (req, res) => {
res.status(404).send({ message: 'Not Found' })
})
app.use(router)
const httpServer = http.createServer(app)
export const wsServer = new WebSocketServer({ server: httpServer })
wsServer.on('connection', handleConnection)
startSendingClientUpdates()
httpServer.listen(process.env.PORT || 8080, () => {
console.log(`Listening on port http://localhost:8080...`)
})