-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathserver.ts
More file actions
54 lines (46 loc) · 1.48 KB
/
server.ts
File metadata and controls
54 lines (46 loc) · 1.48 KB
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
52
53
54
import { createServer } from 'http'
import { Server } from 'socket.io'
import { parse } from 'url'
import next from 'next'
import express from 'ultimate-express'
import { onSocketConnection } from './socket/handler'
import { KUN_SOCKET_IO_ROUTE } from '~/config/app'
const dev = process.env.NODE_ENV !== 'production'
const hostname = dev
? process.env.NEXT_PUBLIC_KUN_PATCH_APP_ADDRESS_DEV_HOST
: process.env.NEXT_PUBLIC_KUN_PATCH_APP_ADDRESS_PROD_HOST
const port =
Number(
dev
? process.env.NEXT_PUBLIC_KUN_PATCH_APP_ADDRESS_DEV_PORT
: process.env.NEXT_PUBLIC_KUN_PATCH_APP_ADDRESS_PROD_PORT
) || 2333
const app = next({ dev, hostname, port, turbopack: true })
const handle = app.getRequestHandler()
app.prepare().then(() => {
const expressApp = express()
const httpServer = createServer((req, res) => {
const parsedUrl = parse(req.url!, true)
if (parsedUrl.pathname?.startsWith(KUN_SOCKET_IO_ROUTE)) {
expressApp(req, res)
} else {
handle(req, res, parsedUrl)
}
}).once('error', (err) => {
console.error(err)
process.exit(1)
})
const io = new Server(httpServer, {
path: KUN_SOCKET_IO_ROUTE,
cors: {
origin: process.env.NEXT_PUBLIC_KUN_PATCH_ADDRESS_DEV
}
})
io.on('connection', (socket) => {
onSocketConnection(io, socket)
})
httpServer.listen(port, () => {
console.log(`> Ready on http://${hostname}:${port}`)
console.log(`> Socket.IO server listening on http://${hostname}:${port}/ws`)
})
})