Added websockts for admin interface

This commit is contained in:
Julian Appel 2024-05-06 22:20:19 +02:00
parent 536c1272d8
commit b7cf1e4d9a
4 changed files with 34 additions and 6 deletions

View File

@ -13,7 +13,7 @@ function pause() {};
function reset() {};
function end() {};
function print() {};
function getValues() {};
function start() {
if(isPaused == true && durationLeft.asSeconds() != 0) { // Only allow start if timer ist currently paused and durationLeft is not 0 seconds
@ -61,6 +61,15 @@ function print() {
return minutes + ":" + seconds
}
module.exports = {
duration, durationLeft, isPaused, start, pause, reset, end, print
function getValues() {
return {
isPaused: isPaused,
duration: duration,
durationLeft: durationLeft,
print: print()
};
}
module.exports = {
duration, durationLeft, isPaused, start, pause, reset, end, print, getValues
}

View File

@ -1,3 +1,20 @@
let wss = "ws://" + window.location.hostname + ":3001" // Build socketio endpoint from window.location
const socket = io(wss); // Connect to socketio server
socket.on('connected', (message) => { // Once client is connected to websocket
console.log("Connected");
initialUpdate() // Request important values to update admin frontend
});
socket.on('timerDurationLeft', (message) => {
console.log(message) // Log durationLeft in client console
document.getElementById("durationLeft").innerHTML = message; // Display durationLeft in corresponding html Element
});
socket.on('timerEnded', (message) => {
initialUpdate(); // Update admin frontend to set correct buttonstatus
});
function updateFrontend(values) {
values.duration = moment.duration(values.duration) // Create moment object from ISO 8601 string
values.durationLeft = moment.duration(values.durationLeft) // Create moment object from ISO 8601 string

View File

@ -11,5 +11,5 @@ socket.on('timerDurationLeft', (message) => {
});
socket.on('timerEnded', (message) => {
document.getElementById("durationLeft").innerHTML = "STOP"; // Display "STOP" in same html element as the duration
document.getElementById("durationLeft").innerHTML = "ENDE"; // Display "STOP" in same html element as the duration
});

View File

@ -1,7 +1,7 @@
var express = require('express');
var router = express.Router();
let timer = require('../controllers/timer');
var timer = require('../controllers/timer');
// Express router entpoint to start the timer
router.get('/timerStart', function(req, res, next) {
@ -36,6 +36,8 @@ router.get('/timerGetValues', function(req, res, next) {
res.json(timer.getValues()); // Respond with important values for frontend
});
// Express router endpoint to switch the score after halftime
router.get('/scoreSwitch', function(req, res, next) {
res.render('admin');
});