diff options
| author | James Barnett <james.barnett@fivium.co.uk> | 2018-04-08 17:25:47 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-04-08 17:25:47 +0100 |
| commit | eb0185c03f8d5b68949798e8040b42a203b040a2 (patch) | |
| tree | 86da8449b0c92ec29a15baffe3e7bd8ebd34488e /routes/ws.js | |
| parent | 954aff49707738e660e92e0418c31b1ec78a85a8 (diff) | |
| parent | 4ec37af74fc77f7381d7c5c3b2560c8726f75ffa (diff) | |
| download | tplink-energy-monitor-eb0185c03f8d5b68949798e8040b42a203b040a2.tar.xz tplink-energy-monitor-eb0185c03f8d5b68949798e8040b42a203b040a2.zip | |
Merge pull request #1 from jamesbarnett91/websocketsv0.2
Switch from http polling to websockets
Diffstat (limited to 'routes/ws.js')
| -rw-r--r-- | routes/ws.js | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/routes/ws.js b/routes/ws.js new file mode 100644 index 0000000..08b0a18 --- /dev/null +++ b/routes/ws.js @@ -0,0 +1,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; |