diff options
Diffstat (limited to 'routes/ws.js')
| -rw-r--r-- | routes/ws.js | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/routes/ws.js b/routes/ws.js new file mode 100644 index 0000000..dc22df2 --- /dev/null +++ b/routes/ws.js @@ -0,0 +1,25 @@ +const express = require('express'); +const router = express.Router(); + +const deviceManager = require('../services/device-manager'); +const dataFetcher = require('../services/data-fetcher'); +const dataBroadcaster = require('../services/data-broadcaster'); + +router.ws('/', function(ws, req) { + + ws.on('message', msg => { + + // Latest data is always pushed out to clients, but clients can also request cached data at any time. + if(msg === 'getCachedData') { + let cachedData = dataFetcher.getCachedData(); + + ws.send(dataBroadcaster.generatePayload('realtimeUsage', cachedData.realtimeUsage)); + ws.send(dataBroadcaster.generatePayload('dailyUsage', cachedData.dailyUsage)); + ws.send(dataBroadcaster.generatePayload('monthlyUsage', cachedData.monthlyUsage)); + ws.send(dataBroadcaster.generatePayload('powerState', cachedData.powerState)); + } + }); + +}); + +module.exports = router; |