Fix session tracking and logging in center.js

This commit is contained in:
2023-12-12 09:14:47 +01:00
parent c873628abc
commit 19ae430779

View File

@@ -74,7 +74,9 @@ function startInterval(session, sessionLogger, rxMetrics) {
failed++; failed++;
}); });
if (rxMetrics) {
rxMetrics.AddEvent(); rxMetrics.AddEvent();
}
sent++; sent++;
inFlight++; inFlight++;
} else { } else {
@@ -93,6 +95,7 @@ function startInterval(session, sessionLogger, rxMetrics) {
logger.info(`Staring server on port ${options.port}...`); logger.info(`Staring server on port ${options.port}...`);
let sessionid = 1; let sessionid = 1;
let messageid = 0; let messageid = 0;
const sessions = [];
const server = smpp.createServer( const server = smpp.createServer(
{ {
debug: options.debug, debug: options.debug,
@@ -105,7 +108,8 @@ const server = smpp.createServer(
session.on("bind_transceiver", function (pdu) { session.on("bind_transceiver", function (pdu) {
if (pdu.system_id === options.systemid && pdu.password === options.password) { if (pdu.system_id === options.systemid && pdu.password === options.password) {
sessionLogger.info("Client connected"); sessions.push(session);
sessionLogger.info(`Client connected, currently: ${sessions.length}`);
session.send(pdu.response()); session.send(pdu.response());
startInterval(session, sessionLogger); startInterval(session, sessionLogger);
} else { } else {
@@ -207,8 +211,13 @@ const server = smpp.createServer(
}); });
session.on("close", function () { session.on("close", function () {
sessionLogger.warn(`Session closed`); sessions.splice(sessions.indexOf(session), 1);
sessionLogger.warn(`Session closed, now ${sessions.length}`);
session.close(); session.close();
if (sessions.length === 0) {
sessionLogger.info("No more sessions, stopping sending timer");
sendTimer.clearInterval();
}
}); });
session.on("error", function (err) { session.on("error", function (err) {
sessionLogger.error(`Fatal error ${err}`); sessionLogger.error(`Fatal error ${err}`);