diff --git a/examples/stats.html b/examples/stats.html index e8ee7944..b6dfe27d 100644 --- a/examples/stats.html +++ b/examples/stats.html @@ -45,6 +45,10 @@
+
+
+
+
@@ -130,6 +134,18 @@ stats.show = async function(data){ //$.getJSON(url.value||(location.origin+'/gun }}); }catch(e){} + try{ + stats.daml = Object.values(data.dam['in'].long).map(function(n){ return n }); + new Chartist.Line('.ct-daml', { + // A labels array that can contain any sort of values + //labels: ['-1min', '-45s', '-30s', '-15s', '0'], + // Our series array that contains series objects or in this case series data arrays + series: [stats.daml] + }, {fullWidth: true, axisY: { + labelInterpolationFnc: function(v) { return v+'ms' } + }}); + }catch(e){} + new Chartist.Line('.ct-cpu', { // A labels array that can contain any sort of values labels: ['-15min', '-5min', '1min'], diff --git a/gun.js b/gun.js index 851a01f3..a06a6c75 100644 --- a/gun.js +++ b/gun.js @@ -1973,9 +1973,11 @@ try{msg = JSON.parse(raw);}catch(e){opt.log('DAM JSON parse error', e)} if(!msg){ return } var i = 0, m; + var S = +new Date; // STATS! while(m = msg[i++]){ mesh.hear(m, peer); } + (mesh.hear.long || (mesh.hear.long = [])).push(+new Date - S); return; } if('{' === tmp || (Type.obj.is(raw) && (msg = raw))){ diff --git a/lib/stats.js b/lib/stats.js index 2e7a943a..5039f05d 100644 --- a/lib/stats.js +++ b/lib/stats.js @@ -41,9 +41,10 @@ Gun.on('opt', function(root){ stats.node.count = Object.keys(root.graph||{}).length; var dam = root.opt.mesh; if(dam){ - stats.dam = {'in': {count: dam.hear.c, done: dam.hear.d}, 'out': {count: dam.say.c, done: dam.say.d}}; + stats.dam = {'in': {count: dam.hear.c, done: dam.hear.d, long: dam.hear.long}, 'out': {count: dam.say.c, done: dam.say.d}}; dam.hear.c = dam.hear.d = dam.say.c = dam.say.d = 0; // reset stats.peers.time = dam.bye.time || 0; + dam.hear.long = []; } var rad = root.opt.store; rad = rad && rad.stats; if(rad){