UNPKG

kevoree-atc-streamvisualiser

Version:

Basic visualisation of streams

140 lines (96 loc) 2.99 kB
var AbstractComponent = require('kevoree-entities/lib/AbstractComponent'); var messages = []; var scaleMessages = []; var path = require('path'); var _ = require('underscore'); var express = require('express'); //var functions = require('./functions.js'); /** * Kevoree component * @type {StreamVisualiser} */ var StreamVisualiser = AbstractComponent.extend({ toString: 'StreamVisualiser', tdef_version: 4, /* This is an example of dictionary attribute that you can set for your entity */ dic_port: { optional: false, defaultValue: 8084 }, construct: function () { this.server = null; }, /** * this method will be called by the Kevoree platform when your component has to start * @param {Function} done */ start: function (done) { var self = this; var app = express(); app.use('/', express.static(path.join(__dirname, '..', 'public'))); app.get('/poll', function (req, res) { var timestamp = parseInt(req.query.timestamp, 10); // console.log(timestamp + '>' + JSON.stringify(messages) + ', poll'); // eslint-disable-line if (isNaN(timestamp)) { res.send(JSON.stringify(messages)); } else { var newMessages = _.filter(messages, function (elem) { return elem.timestamp > timestamp; }); res.send(JSON.stringify(newMessages)); } }); app.get('/scalePoll', function(req,res){ var timestamp = parseInt(req.query.timestamp, 10); // console.log(timestamp + '>' + JSON.stringify(scaleMessages) + ', scalepoll'); // eslint-disable-line if (isNaN(timestamp)) { res.send(JSON.stringify(scaleMessages)); } else { var newScaleMessages = _.filter(scaleMessages, function (elem) { return elem.timestamp > timestamp; }); res.send(JSON.stringify(newScaleMessages)); } }); // read port value from Kevoree var port = this.dictionary.getNumber('port', StreamVisualiser.prototype.dic_port.defaultValue); this.server = app.listen(port, function () { self.log.info(self.toString(), '['+self.getName()+'] server listening at 0.0.0.0:' + port); }); done(); }, /** * this method will be called by the Kevoree platform when your component has to stop * @param {Function} done */ stop: function (done) { if (this.server) { this.server.close(done); } else { done(); } }, /** * * */ in_input: function (msg) { var item = JSON.parse(msg); if(item.item !=undefined){ console.log('> item msg received:' + item.item.id); // eslint-disable-line // console.log('> item:' + item); // eslint-disable-line messages.push({ "data": item, "timestamp": (new Date().getTime()) }); }//end if else{ console.log('> scale msg received:' + item.msg); // eslint-disable-line scaleMessages.push({ "scaleData": item, "timestamp": (new Date().getTime()) }); }//end else }//end input() }); module.exports = StreamVisualiser;