Skip to content Skip to sidebar Skip to footer

How Does `server.listen()` Keep The Node Program Running

Node.js program is terminated when the event loop is empty. If I use http module and create a server without any callback to be added to event loop, the program is terminated: cons

Solution 1:

Two things here:

If you look at the Node.js documentation about server.listen(...) it says on the first line:

Begin accepting connections on the specified port and hostname...

and:

This function is asynchronous. When the server has been bound, 'listening' event will be emitted...

This per se is not enough to answer your question. So let's take a look at the code.

The listen() method (https://github.com/nodejs/node/blob/master/lib/net.js#L1292) ends up calling self._listen2() method. There in the last line:

process.nextTick(emitListeningNT, this);

(https://github.com/nodejs/node/blob/master/lib/net.js#L1276)

wich is a callback to:

functionemitListeningNT(self) {
  // ensure handle hasn't closedif (self._handle)
    self.emit('listening');
}

(https://github.com/nodejs/node/blob/master/lib/net.js#L1285).

This way, unless node.js detects an error or some other stop condition it will keep running.

Post a Comment for "How Does `server.listen()` Keep The Node Program Running"