blob: 08b0a188d0b33ac3b619ce807547cb51ff99ffc8 (
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
26
27
28
|
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 => {
let message = JSON.parse(msg);
// Latest data is always pushed out to clients, but clients can also request cached data at any time.
if(message.requestType === 'getCachedData') {
let deviceId = message.deviceId;
let cachedData = dataFetcher.getCachedData(deviceId);
ws.send(dataBroadcaster.generatePayload('realtimeUsage', deviceId, cachedData.realtimeUsage));
ws.send(dataBroadcaster.generatePayload('dailyUsage', deviceId, cachedData.dailyUsage));
ws.send(dataBroadcaster.generatePayload('monthlyUsage', deviceId, cachedData.monthlyUsage));
ws.send(dataBroadcaster.generatePayload('powerState', deviceId, cachedData.powerState));
}
});
});
module.exports = router;
|