update
Took 25 hours 49 minutes
This commit is contained in:
59
src/routes/ws/websocketRoute.ts
Normal file
59
src/routes/ws/websocketRoute.ts
Normal file
@ -0,0 +1,59 @@
|
||||
import {WebSocketPayload} from "../../WebSocketPayload";
|
||||
import debug from "debug";
|
||||
import {WebSocketHandler} from "../../WebSocketHandler";
|
||||
import {iTender} from "../../iTender";
|
||||
import {iTenderStatus} from "../../iTenderStatus";
|
||||
import {WebSocketEvent} from "../../WebSocketEvent";
|
||||
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
|
||||
|
||||
const log = debug("itender:websocket");
|
||||
|
||||
router.ws('/', async (ws, req, next) => {
|
||||
log("Incoming websocket connection...");
|
||||
|
||||
if (WebSocketHandler.ws)
|
||||
WebSocketHandler.ws.close(1001);
|
||||
WebSocketHandler.ws = ws;
|
||||
|
||||
|
||||
await WebSocketHandler.sendStatus();
|
||||
|
||||
async function sendWhenReady() {
|
||||
if (iTender.status != iTenderStatus.READY) {
|
||||
setTimeout(sendWhenReady, 100);
|
||||
return;
|
||||
}
|
||||
|
||||
iTender.setStatus(iTenderStatus.REFRESHING);
|
||||
|
||||
let payload = new WebSocketPayload(WebSocketEvent.DRINKS, false, iTender.drinks);
|
||||
await WebSocketHandler.send(payload);
|
||||
|
||||
setTimeout(() => {
|
||||
if (iTender.status == iTenderStatus.REFRESHING)
|
||||
iTender.setStatus(iTenderStatus.READY);
|
||||
}, 2000);
|
||||
|
||||
}
|
||||
|
||||
sendWhenReady().then();
|
||||
|
||||
ws.on('message', async (raw, bool) => {
|
||||
let msg = WebSocketPayload.parseFromBase64Json(raw);
|
||||
// If message is null, close the socket because it could not be decompiled
|
||||
if (!msg) {
|
||||
ws.close(1011);
|
||||
return;
|
||||
}
|
||||
|
||||
switch (msg.event) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
module.exports = router;
|
Reference in New Issue
Block a user