aboutsummaryrefslogtreecommitdiff
path: root/routes/ws.js
blob: dc22df26b27aae0548d571890d305e072eda9371 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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;