Implement center sending as well
This commit is contained in:
23
center.js
23
center.js
@@ -37,15 +37,15 @@ let success = 0;
|
|||||||
let failed = 0;
|
let failed = 0;
|
||||||
const sendTimer = new NanoTimer();
|
const sendTimer = new NanoTimer();
|
||||||
|
|
||||||
function startInterval(session) {
|
function startInterval(session, sessionLogger) {
|
||||||
sendTimer.setInterval(
|
sendTimer.setInterval(
|
||||||
async () => {
|
async () => {
|
||||||
if (sent >= options.messagecount) {
|
if (sent >= options.messagecount) {
|
||||||
logger.info(`Finished sending messages success:${success}, failed:${failed}, idling...`);
|
logger.info(`Finished sending messages success:${success}, failed:${failed}, idling...`);
|
||||||
sendTimer.clearInterval();
|
sendTimer.clearInterval();
|
||||||
} else if (inFlight < options.window) {
|
} else if (inFlight < options.window) {
|
||||||
logger.info(`Sending message ${sent + 1}/${options.messagecount}`);
|
sessionLogger.info(`Sending message ${sent + 1}/${options.messagecount}`);
|
||||||
session.submit_sm(
|
session.deliver_sm(
|
||||||
{
|
{
|
||||||
source_addr: options.source,
|
source_addr: options.source,
|
||||||
destination_addr: options.destination,
|
destination_addr: options.destination,
|
||||||
@@ -54,10 +54,10 @@ function startInterval(session) {
|
|||||||
function (pdu) {
|
function (pdu) {
|
||||||
inFlight--;
|
inFlight--;
|
||||||
if (pdu.command_status === 0) {
|
if (pdu.command_status === 0) {
|
||||||
logger.info(`Received response with id ${pdu.message_id}`);
|
sessionLogger.info(`Received response with id ${pdu.message_id}`);
|
||||||
success++;
|
success++;
|
||||||
} else {
|
} else {
|
||||||
logger.warn(`Message failed with id ${pdu.message_id}`);
|
sessionLogger.warn(`Message failed with id ${pdu.message_id}`);
|
||||||
failed++;
|
failed++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -65,9 +65,11 @@ function startInterval(session) {
|
|||||||
sent++;
|
sent++;
|
||||||
inFlight++;
|
inFlight++;
|
||||||
} else {
|
} else {
|
||||||
logger.warn(`${inFlight}/${options.window} messages pending, waiting for a reply before sending more`);
|
sessionLogger.warn(
|
||||||
|
`${inFlight}/${options.window} messages pending, waiting for a reply before sending more`
|
||||||
|
);
|
||||||
sendTimer.clearInterval();
|
sendTimer.clearInterval();
|
||||||
setTimeout(() => startInterval(session), options.windowsleep);
|
setTimeout(() => startInterval(session, sessionLogger), options.windowsleep);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"",
|
"",
|
||||||
@@ -76,7 +78,6 @@ function startInterval(session) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
logger.info(`Staring server on port ${options.port}...`);
|
logger.info(`Staring server on port ${options.port}...`);
|
||||||
let sessions = {};
|
|
||||||
let sessionid = 1;
|
let sessionid = 1;
|
||||||
let messageid = 0;
|
let messageid = 0;
|
||||||
const server = smpp.createServer(
|
const server = smpp.createServer(
|
||||||
@@ -88,9 +89,9 @@ 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) {
|
||||||
// sessions[session] = true;
|
|
||||||
sessionLogger.info("Client connected");
|
sessionLogger.info("Client connected");
|
||||||
session.send(pdu.response());
|
session.send(pdu.response());
|
||||||
|
startInterval(session, sessionLogger);
|
||||||
} else {
|
} else {
|
||||||
sessionLogger.warn(
|
sessionLogger.warn(
|
||||||
`Client tried to connect with incorrect login ('${pdu.system_id}' '${pdu.password}'`
|
`Client tried to connect with incorrect login ('${pdu.system_id}' '${pdu.password}'`
|
||||||
@@ -146,18 +147,16 @@ const server = smpp.createServer(
|
|||||||
|
|
||||||
session.on("close", function () {
|
session.on("close", function () {
|
||||||
sessionLogger.warn(`Session closed`);
|
sessionLogger.warn(`Session closed`);
|
||||||
delete sessions[sessions];
|
|
||||||
session.close();
|
session.close();
|
||||||
});
|
});
|
||||||
session.on("error", function (err) {
|
session.on("error", function (err) {
|
||||||
sessionLogger.error(`Fatal error ${err}`);
|
sessionLogger.error(`Fatal error ${err}`);
|
||||||
delete sessions[sessions];
|
|
||||||
session.close();
|
session.close();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
server.on('error', function(err) {
|
server.on("error", function (err) {
|
||||||
logger.error(`Fatal server error ${err}`);
|
logger.error(`Fatal server error ${err}`);
|
||||||
server.close();
|
server.close();
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
|
@@ -58,9 +58,8 @@ const centerOptions = [
|
|||||||
{ name: "systemid", alias: "s", type: String, description: "SMPP related login info." },
|
{ name: "systemid", alias: "s", type: String, description: "SMPP related login info." },
|
||||||
{ name: "password", alias: "w", type: String, description: "SMPP related login info." },
|
{ name: "password", alias: "w", type: String, description: "SMPP related login info." },
|
||||||
{ name: "dr", type: Boolean, description: "Whether or not to send Delivery Reports.", defaultOption: false },
|
{ name: "dr", type: Boolean, description: "Whether or not to send Delivery Reports.", defaultOption: false },
|
||||||
{ name: "sessions", type: Number, description: "Number of sessions to start, defaults to 1.", defaultOption: 1 },
|
|
||||||
{
|
{
|
||||||
name: "maxsessions",
|
name: "sessions",
|
||||||
type: Number,
|
type: Number,
|
||||||
description: "Maximum number of client sessions to accept, defaults to 8.",
|
description: "Maximum number of client sessions to accept, defaults to 8.",
|
||||||
defaultOption: 8,
|
defaultOption: 8,
|
||||||
|
Reference in New Issue
Block a user