-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathindex.ts
More file actions
46 lines (40 loc) · 1.37 KB
/
index.ts
File metadata and controls
46 lines (40 loc) · 1.37 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
import next from "next";
import { Server } from "http";
import io from "socket.io";
import path from "path";
import fs from "fs";
import { generateUserName } from "./server/generateUserName";
import { createSocketHandler } from "./server/createSocketHandler";
import { createRequestHandler } from "./server/createRequestHandler";
const port = parseInt(process.env.PORT) || 3000;
const env = process.env.NODE_ENV || "production";
const dev = env !== "production";
const pkg = JSON.parse(
fs.readFileSync(path.join(__dirname, "package.json")).toString()
);
const nextApp = next({
dir: ".",
dev,
});
const handler = nextApp.getRequestHandler();
nextApp
.prepare()
.then(async () => {
// create http server
const httpServer = new Server((req, res) => {
requestHandler(req, res) || handler(req, res);
});
// create Socket.io server
const socketServer = io(httpServer);
const socketHandler = createSocketHandler(socketServer);
const requestHandler = createRequestHandler(socketServer);
socketServer.engine["generateId"] = generateUserName;
socketServer.on("connection", socketHandler);
// start listening
httpServer.listen(port, () => {
console.error("Web server started to listen port:", port);
});
})
.catch((err) => {
console.error("Next.js server failed to start", err);
});