Git Product home page Git Product logo

Comments (1)

sukhrobkhakimov avatar sukhrobkhakimov commented on July 19, 2024 2

You can do like this. But, you should use some kind of process control system like "http://supervisord.org/" in order to reconnect to an operator after process.exit(). Hope, it helps. Good luck!

// Missed enquire links counter
var counter = 0;

// Total missed enquire links allowed
var maxCount = 3;

// Timeout for an enquire link
var timeout = 20000; // 20 seconds

var session = smpp.connect(
     'host',
     'port'
);

// Respond to an enquire link
session.on('enquire_link', function (pdu) {
     session.send(pdu.response());
     logger.info('Responded an enquire link');
});

// Response to an enquire link
session.on('enquire_link_resp', function (pdu) {
     counter = 0;
     logger.info('Received a response to an enquire link');
});

// Listen to the unbind event and kill the process
session.on('unbind', function(pdu) {
     session.send(pdu.response());
     logger.info('SMPP unbind');
     session.close();
     process.exit();
});

// Kill the process on an SMPP connection error
session.on('error', function (error) {
     logger.error('SMPP connection error: ' + error);
     session.close();
     process.exit(1);
});

// Kill the process when an SMPP connection is closed
session.on('close', function () {
     logger.info('SMPP connection is closed');
     process.exit();
});

// Bind transceiver
session.bind_transceiver({
     system_id: 'login',
     password: 'password'
}, function (pdu) {
     if (pdu.command_status != smpp.errors.ESME_ROK) {
         logger.error('SMPP bind transceiver error: ' + pdu.command_status);
         session.close();
         process.exit(1);
     } else {
         logger.info('Connected');
         enquireLink();

         // Send sms here....
     }
} 

function enquireLink() {
    if (counter < maxCount) {
        session.enquire_link();
        counter++;
        logger.info('Enquired a link');

        setTimeout(function () {
            enquireLink();
        }, timeout);
    } else {
        logger.info('The SMPP connection is dead.');
        session.close();
        process.exit();
    }
}

from node-smpp.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.