Skip to content

Commit 5f68bdb

Browse files
committed
fix
1 parent 21bede8 commit 5f68bdb

3 files changed

Lines changed: 50 additions & 29 deletions

File tree

src/app.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
const express = require("express")
22
const log = require("./utils/logger")
33
const env = require("./env")
4+
const http = require("http")
45

56
const app = express()
67

@@ -25,10 +26,14 @@ app.use((req, res, next) => {
2526
const auth = require("./auth")
2627
const wol = require("./wol")
2728

29+
const wss = require("./wss")
30+
2831
app.use("/", auth)
2932

30-
app.use("/", wol)
33+
const server = http.createServer(app)
34+
35+
wss.attach(server, app, wol)
3136

32-
app.listen(env.ENV.port, () => {
37+
server.listen(env.ENV.port, () => {
3338
log.logger.info(`Server running on Port ${env.ENV.port}`)
3439
})

src/wol.js

Lines changed: 4 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,11 @@
1-
const ws = require("ws")
2-
const http = require("http")
3-
const { v4: uuidv4 } = require("uuid")
41
const express = require("express")
2+
const wss = require("./wss")
53

64
const { logger } = require("./utils/logger")
75
const { ENV } = require("./env")
86
const fs = require("fs")
97

108
const router = express.Router()
11-
const server = http.createServer(router)
12-
const wss = new ws.Server({ server })
13-
14-
const clients = {}
159

1610
const CONFIG = JSON.parse(fs.readFileSync(ENV.configPath, "utf8"))
1711

@@ -187,7 +181,7 @@ async function startProcessing(req, res) {
187181
return res.json({ error: true, message: "No route for hostname" })
188182
}
189183

190-
const requestId = uuidv4()
184+
const requestId = wss.createRequestId()
191185

192186
res.json({ error: false, message: "Start request received", requestId })
193187

@@ -237,7 +231,7 @@ async function startProcessing(req, res) {
237231
}
238232
}
239233

240-
const ws = clients[requestId]
234+
const ws = wss.getClient(requestId)
241235

242236
if (ws && ws.readyState === WebSocket.OPEN) {
243237
ws.send(
@@ -252,23 +246,6 @@ async function startProcessing(req, res) {
252246
}
253247
}
254248

255-
wss.on("connection", (ws, req) => {
256-
const url = new URL(req.url)
257-
const requestId = url.searchParams.get("requestId")
258-
259-
if (!requestId) {
260-
ws.send(JSON.stringify({ error: "Missing requestId" }))
261-
ws.close()
262-
return
263-
}
264-
265-
clients[requestId] = ws
266-
267-
ws.on("close", () => {
268-
delete clients[requestId]
269-
})
270-
})
271-
272-
router.get("/start", async (res, req) => await startProcessing(req, res))
249+
router.get("/start", async (req, res) => await startProcessing(req, res))
273250

274251
module.exports = router

src/wss.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
const WebSocket = require("ws")
2+
const { v4: uuidv4 } = require("uuid")
3+
4+
const clients = {}
5+
6+
let wss = null
7+
8+
function attach(server, app, router) {
9+
wss = new WebSocket.Server({ server })
10+
11+
wss.on("connection", (socket, req) => {
12+
const url = new URL(req.url)
13+
const requestId = url.searchParams.get("requestId")
14+
15+
if (!requestId) {
16+
socket.send(JSON.stringify({ error: true, message: "Missing requestId" }))
17+
socket.close()
18+
return
19+
}
20+
21+
clients[requestId] = socket
22+
23+
socket.on("close", () => {
24+
delete clients[requestId]
25+
})
26+
})
27+
28+
app.use("/", router)
29+
}
30+
31+
function getClient(requestId) {
32+
return clients[requestId]
33+
}
34+
35+
function createRequestId() {
36+
return uuidv4()
37+
}
38+
39+
module.exports = { attach, getClient, createRequestId }

0 commit comments

Comments
 (0)