#node.js #sms-gateway
#node.js #sms-шлюз
Вопрос:
У меня 4 IP-адреса SMSC, и я подключаю их случайным образом. Есть ли способ подключиться ко 2-му, 3-му или 4-му, если первый IP-адрес SMSC вышел из строя?
Вот мой текущий код.
const smsc = [
'192.168.1.1',
'192.168.1.2',
'192.168.1.3',
'192.168.1.4',
];
const port = 1234
//iterate SMSC IP
var smsc_ip = smsc[Math.floor(Math.random() * smsc.length)];
var session = new smpp.Session({host: smsc_ip, port: port});
var didConnect = false;
session.on('connect', function(){
didConnect = true;
session.bind_transceiver({
system_id: 'system_id',
password: 'password',
system_type: "SENDER",
interface_version: 1,
}, function(pdu) {
console.log('pdu status', lookupPDUStatusKey(pdu.command_status));
if (pdu.command_status == 0) {
console.log('Successfully bound')
}
});
});
session.on('close', function(){
console.log('smpp disconnected')
if (didConnect) {
connectSMPP();
}
});
session.on('error', function(error){
console.log('smpp error', error)
didConnect = false;
});
function connectSMPP () {
// connect to another SMSC IP?
console.log('smpp reconnecting');
session.connect();
}
function lookupPDUStatusKey(pduCommandStatus) {
for (var k in smpp.errors) {
if (smpp.errors[k] == pduCommandStatus) {
return k
}
}
}
У меня есть функция connectSMPP для повторного подключения сеанса, если сеанс был отключен. Должен ли я также включить новый сеанс внутри connectSMPP для инициализации нового сеанса и использования всех остальных IP-адресов SMSC, а затем выйти, если все IP-адреса SMSC не работают?
Ответ №1:
Попробуйте сохранить свои активные сеансы в главном списке, затем добавьте функцию запроса ссылки вне основного потока, чтобы проверить работоспособность соединения. Вы можете использовать планирование с интервалом в 10 секунд, и если не удалось подключиться к ссылке запроса, удалите ее из основного списка и добавьте в список повторного подключения, который в списке повторного подключения вы можете выполнить методом повторного подключения.