Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

194
Visualizações
A standard for error handling and graceful shutdown of Node/Express server

Below is a basic script I usually use for my express servers. Specifically, I am looking for answers to the following questions: Is it needed to include SIGINT and SIGTERM process signal handlers in production? Do I need to actually include an uncaught exception handler? What about tracking and cleaning up sockets? Do I use process.exit(), process.exit(0), or process.exit(1), and if so, where exactly and why?

var express = require('express');
var sockets = [];
process.on('SIGINT', cleanup);
process.on('SIGTERM', cleanup);
var port = 7000;
var app = express();
var server = app.listen(port, function () {
    console.log(`app listening on port ${port}`);
})
.on("connection", onConnection)
.on("listening", onListening)
.on("error", onError)
.on("close", onClose);


var cleanup = function () {
    server.close(function () {
        console.log("Closed out remaining connections.");
        process.exit();
    });
    sockets.forEach(function (socket) {
        socket.destroy();
    });

    setTimeout(function () {
        console.log("Could not close connections in time, forcing shut down");
        process.exit(1);
    }, 30 * 1000);
}

function onConnection(socket) {
  sockets.push(socket);
}

function onError(error) {
  if (error.syscall !== 'listen') throw error;

  var bind = typeof port === 'string'? 'Pipe ' + port : 'Port ' + port;

  switch (error.code) {
    case 'EACCES':
      console.error(bind + ' requires elevated privileges');
      process.exit(1);
      break;
    case 'EADDRINUSE':
      console.error(bind + ' is already in use');
      process.exit(1);
      break;
    default:
      throw error;
  }
}

function onListening() {
  var addr = server.address();
  var bind = typeof addr === 'string'? 'pipe ' + addr : 'port ' + addr.port;
  console.log('Listening on ' + bind);
}
about 4 years ago · Santiago Trujillo
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda