http-server-shutdown

1.1.2 • Public • Published

server-shutdown

Nodejs server graceful shutdown

用途

程序断开或重启时,已连接的socket连接将会在处理完成后再重启

注意

使用pm2管理应用程序时,需要在启动时加上 --kill-timeout 10000 参数,否则pm2会立刻结束你的任务

pm2 start index.js --kill-timeout 10000

引入

const ShutDown = require('http-server-shutdown')

API

方式一: 如果需要使用shutDown的关闭服务,你需要使用以下方式

  new ShutDown(server, // 传入 server = app.listen(...)
  {
    signals: ['SIGINT','SIGTERM'], // 接收的信号参数
    timeout: 30000, // 超时时间
    before: function () { // 关机前的处理函数
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          resolve(console.log('before 123'))
        }, 1000)
      })
    },
    after: function () { // 关机后的处理函数, 仅处理同步方法
      console.log('after: server gracefull shutted down.....')
    },
    errCb: function (e) { // 需要提供出现错误时的error回调,传入Error对象
      e && console.log(e.message || 'unknown error')
    }
  }
)

方式二: 如果不想使用shutdown关闭服务,而需要处理关闭期间的socket请求,处理并断开所有connection后返回(关闭期间需要自己重定向或停止接收新的请求,否则会有理论上永远处理不完connection的可能)

let shutdown = new ShutDown(server,
  {
    monitor: false  // 控制是否需要开启监控,默认为true
  }
)
shutdown.serverClose()  // 连接全部关闭后将会返回一个promise

Readme

Keywords

Package Sidebar

Install

npm i http-server-shutdown

Weekly Downloads

2

Version

1.1.2

License

MIT

Unpacked Size

7.34 kB

Total Files

4

Last publish

Collaborators

  • cuzz