2015-09-17 23:29:32 -07:00
|
|
|
var Logger = require('./logger');
|
2015-12-11 00:03:18 -05:00
|
|
|
var path = require('path');
|
|
|
|
|
var counterLog = new Logger.Logger(path.resolve(__dirname, '..', 'counters.log'));
|
2015-10-28 23:38:17 -07:00
|
|
|
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);
|
2016-05-06 20:09:00 -07:00
|
|
|
Metrics.addReportHook((metrics) => {
|
|
|
|
|
metrics.incCounter('socket.io:count', getConnectedSockets());
|
|
|
|
|
});
|