Admiral Land
Admiral Land

Reputation: 2492

How to write nodejs service, running all time

I am new into nodeJs (and JS), so can you explain me (or give a link) how to write simple service of nodeJs, which run permanently?

I want to write service, which sends a request every second to foreign API at store the results it DB.

So, maybe nodeJs have some simple module to run js method (methods) over and over again?

Or, I just have to write while loop and do it there?

Upvotes: 1

Views: 1004

Answers (1)

jfriend00
jfriend00

Reputation: 707318

setInterval() is what you would use to run something every second in node.js. This will call a callback every NN milliseconds where you pass the value of NN.

var interval = setInterval(function() {
    // execute your request here
}, 1000);

If you want this to run forever, you will need to also handle the situation where the remote server you are contacting is off-line or having issues and is not as responsive as normal (for example, it may take more than a second for a troublesome request to timeout or fail). It might be safer to repeatedly use setTimeout() to schedule the next request 1 second after one finishes processing.

function runRequest() {
    issueRequest(..., function(err, data) {
        // process request results here

        // schedule next request
        setTimeout(runRequest, 1000);
    })
}

// start the repeated requests
runRequest();

In this code block issueRequest() is just a placeholder for whatever networking operation you are doing (I personally would probably use the request() module and use request.get().

Because your request processing is asynchronous, this will not actually be recursion and will not cause a stack buildup.


FYI, a node.js process with an active incoming server or an active timer or an in-process networking operation will not exit (it will keep running) so as long as you always have a timer running or a network request running, your node.js process will keep running.

Upvotes: 5

Related Questions