aboutsummaryrefslogtreecommitdiff
path: root/routes/ws.js
diff options
context:
space:
mode:
Diffstat (limited to 'routes/ws.js')
-rw-r--r--routes/ws.js25
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;