sync/src/counters.js

35 lines
1.1 KiB
JavaScript
Raw Normal View History

2015-09-17 23:29:32 -07:00
var Logger = require('./logger');
var path = require('path');
var counterLog = new Logger.Logger(path.resolve(__dirname, '..', 'counters.log'));
import os from 'os';
import io from 'socket.io';
2015-10-30 22:25:00 -07:00
import Socket from 'socket.io/lib/socket';
2016-04-27 21:55:25 -07:00
import * as Metrics from 'cytube-common/lib/metrics/metrics';
import { JSONFileMetricsReporter } from 'cytube-common/lib/metrics/jsonfilemetricsreporter';
2015-09-17 23:29:32 -07:00
var counters = {};
2016-04-27 21:55:25 -07:00
exports.add = Metrics.incCounter;
2015-09-17 23:29:32 -07:00
2015-10-30 22:25:00 -07:00
Socket.prototype._packet = Socket.prototype.packet;
Socket.prototype.packet = function () {
this._packet.apply(this, arguments);
exports.add('socket.io:packet');
};
2016-01-06 21:42:48 -08:00
function getConnectedSockets() {
var sockets = io.instance.sockets.sockets;
if (typeof sockets.length === 'number') {
return sockets.length;
} else {
return Object.keys(sockets).length;
}
}
2016-04-27 21:55:25 -07:00
const reporter = new JSONFileMetricsReporter('counters.log');
Metrics.setReporter(reporter);
Metrics.setReportInterval(60000);
Metrics.addReportHook((metrics) => {
metrics.incCounter('socket.io:count', getConnectedSockets());
});