feat(timeout): proietta spot video sul display durante il time out
Aggiunge il flag `timeout` nello stato e l'action `toggleTimeout`: dal controller il pulsante Time Out commuta la modalità e il display copre il tabellone con i video .mp4 della cartella `spot/` (non versionata). - un solo video → loop; più video → sequenza alfabetica con ritorno al primo; cartella vuota/assente → overlay "TIME OUT". - `src/spot-utils.js` (listSpotVideos) elenca i .mp4; endpoint `/spot/list` + file statici `/spot/<file>.mp4` serviti sia in prod (server.js) sia in dev (vite-plugin-websocket.js). - il display avvia i video con audio e ripiega su muto se il browser blocca l'autoplay con suono. - il controller resta operativo ma evidenzia la modalità con banner e pulsante arancione pulsante, in entrambi i layout (mobile ed esteso).
This commit is contained in:
@@ -1,7 +1,13 @@
|
||||
import { WebSocketServer } from 'ws'
|
||||
import express from 'express'
|
||||
import { fileURLToPath } from 'url'
|
||||
import { dirname, join } from 'path'
|
||||
import { setupWebSocketHandler } from './src/websocket-handler.js'
|
||||
import { printServerInfo } from './src/server-utils.js'
|
||||
import { loadState, saveState } from './src/persist.js'
|
||||
import { listSpotVideos } from './src/spot-utils.js'
|
||||
|
||||
const SPOT_DIR = join(dirname(fileURLToPath(import.meta.url)), 'spot')
|
||||
|
||||
export default function websocketPlugin() {
|
||||
return {
|
||||
@@ -10,6 +16,16 @@ export default function websocketPlugin() {
|
||||
const wss = new WebSocketServer({ noServer: true })
|
||||
setupWebSocketHandler(wss, { initialState: loadState(), onStateChange: saveState })
|
||||
|
||||
// Video spot del time out: stesso comportamento di server.js (elenco + statici)
|
||||
server.middlewares.use('/spot', (req, res, next) => {
|
||||
if (req.url === '/list' || req.url === '/list/') {
|
||||
res.setHeader('Content-Type', 'application/json')
|
||||
return res.end(JSON.stringify(listSpotVideos(SPOT_DIR)))
|
||||
}
|
||||
next()
|
||||
})
|
||||
server.middlewares.use('/spot', express.static(SPOT_DIR))
|
||||
|
||||
// Rewrite /display → / (index.html) e /controller → /controller.html
|
||||
server.middlewares.use((req, _res, next) => {
|
||||
if (req.url === '/display' || req.url === '/display/') req.url = '/'
|
||||
|
||||
Reference in New Issue
Block a user