固定陷阱
在SIGINT和SIGTERM信号上优雅地关闭服务器的固接插件.
安装
$ npm i @dnlup/fastify-traps
使用量
默认
const fastify = require('fastify')()
const traps = require('@dnlup/fastify-traps')
fastify.register(traps)
fastify.get('/', (request, reply) => {
reply.send({ ok: true })
})
fastify.listen(3000)
插件将使用实例日志打印一些信息, 如收到的信号 如果它能成功关闭固定实例.
自定义关闭超时
默认情况下,插件会等30秒服务器关闭. 之后,它会带着代码退出进程 1。 。 。 .
您可以更改超时值 .
const fastify = require('fastify')()
const traps = require('@dnlup/fastify-traps')
fastify.register(traps, {
timeout: 1000 // wait 1 second before forcing exiting
})
fastify.listen(3000)
自定义钩子
插件允许注册自定义,同步函数来覆盖默认的钩子.
钩子的上下文与 fastify 实例,可以使用 this 以提及它.
const fastify = require('fastify')()
const traps = require('@dnlup/fastify-traps')
fastify.register(traps, {
onSignal(signal) {
this.log.debug(`Received signal ${signal}`)
},
onClose() {
this.log.info('Server closed')
},
onTimeout(timeout) {
this.log.error(`Forcing close after ${timeout} ms`)
},
onError(error) {
this.log.error(`Uh oh: ${error.message}`)
}
})
fastify.listen(3000)
插件选项
timeout<number>: 等待服务器关闭的毫秒数onSignal<function>: 在信号自定义上 钩子onClose<function>: 在信号自定义上 钩子onTimeout<function>: 在信号自定义上 钩子onError<function>: 在信号自定义上 钩子strict<boolean>: 如果出现错误SIGINT或者说SIGTERM处理器已经注册 . 默认 :true。 。 。 .
如前所言 钩子上下文与 fastify 实例,可以使用 this 以提及它.
在符号( 符号) 上
signal<string>: 收到信号
插件收到时会叫这个钩子 SIGINT 或者说 SIGTERM 信号.
关闭( C)
插件会在服务器关闭时调用此钩子 .
超时( 超时)
timeout<number>: 超时的毫秒数
当等待服务器关闭的超时时, 插件会调用此钩子 .
错误( 错误)
error<Error|*>: 关闭服务器时出错
当关闭服务器时出错时, 插件会调用此钩头 .