57 lines
1.1 KiB
JavaScript
57 lines
1.1 KiB
JavaScript
|
/* jslint node: true */
|
||
|
'use strict';
|
||
|
|
||
|
var logger = require('./logger.js');
|
||
|
|
||
|
exports.addNewClient = addNewClient;
|
||
|
exports.removeClient = removeClient;
|
||
|
|
||
|
var clientConnections = [];
|
||
|
exports.clientConnections = clientConnections;
|
||
|
|
||
|
function addNewClient(client) {
|
||
|
var id = client.runtime.id = clientConnections.push(client) - 1;
|
||
|
|
||
|
// Create a client specific logger
|
||
|
client.log = logger.log.child( { clientId : id } );
|
||
|
|
||
|
var connInfo = { ip : client.input.remoteAddress };
|
||
|
|
||
|
if(client.log.debug()) {
|
||
|
connInfo.port = client.input.localPort;
|
||
|
connInfo.family = client.input.localFamily;
|
||
|
}
|
||
|
|
||
|
client.log.info(connInfo, 'Client connected');
|
||
|
|
||
|
return id;
|
||
|
}
|
||
|
|
||
|
function removeClient(client) {
|
||
|
client.end();
|
||
|
|
||
|
var i = clientConnections.indexOf(client);
|
||
|
if(i > -1) {
|
||
|
clientConnections.splice(i, 1);
|
||
|
|
||
|
logger.log.info(
|
||
|
{
|
||
|
connectionCount : clientConnections.length,
|
||
|
clientId : client.runtime.id
|
||
|
},
|
||
|
'Client disconnected'
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* :TODO: make a public API elsewhere
|
||
|
function getActiveClientInformation() {
|
||
|
var info = {};
|
||
|
|
||
|
clientConnections.forEach(function connEntry(cc) {
|
||
|
|
||
|
});
|
||
|
|
||
|
return info;
|
||
|
}
|
||
|
*/
|