mirror of
https://github.com/bckelley/cgm-remote-monitor.git
synced 2026-08-24 03:14:12 -05:00
39 lines
714 B
JavaScript
39 lines
714 B
JavaScript
var Stream = require('stream');
|
|
|
|
function init (env, ctx) {
|
|
var beats = 0;
|
|
var started = new Date( );
|
|
var id;
|
|
var interval = env.HEARTBEAT || 20000;
|
|
|
|
var stream = new Stream;
|
|
|
|
function ictus ( ) {
|
|
var tick = {
|
|
now: new Date( )
|
|
, type: 'heartbeat'
|
|
, sig: 'internal://' + ['heartbeat', beats ].join('/')
|
|
, beat: beats++
|
|
, interval: interval
|
|
, started: started
|
|
};
|
|
return tick;
|
|
}
|
|
|
|
function repeat ( ) {
|
|
stream.emit('tick', ictus( ));
|
|
}
|
|
|
|
function ender ( ) {
|
|
if (id) { cancelInterval(id); }
|
|
stream.emit('end');
|
|
}
|
|
|
|
stream.readable = true;
|
|
stream.uptime = repeat;
|
|
id = setInterval(repeat, interval);
|
|
return stream;
|
|
}
|
|
module.exports = init;
|
|
|