Node.js和Socket.IO通知警告服务器重新启动

对不起,如果这是这个问题的错误堆栈。

我有一个在Heroku上运行的Node.js服务器。 每当我提交的东西,服务器重新启动。 我想警告用户,将会重新启动,这样我就不会完全毁了他们的经验。 只是一个简单的通知与文本“服务器在X分钟重新启动”。

比方说,我已经设置了客户端,并且Socket.IO发出是通知显示所需的全部内容。 我该怎么做? 我想在客户端有一些鬼鬼祟祟的function,会让服务器发出通知,但是恐怕很容易被利用。

答案是检测到Heroku发送给你的应用程序closures它的SIGTERM信号,一旦检测到这个信号,发送通知给每个连接的客户端:

 process.on('SIGTERM', () => { // send your signal }) 

但是,更好的用户体验就是确保用户永远不会知道您的服务器重新启动。 与节点这应该不难,你只需要:

  1. 为了确保您的stream程结束并快速启动(快速几秒钟)
  2. 为了确保您的客户端都具有重新连接逻辑(这是内置在socket.io中,所以你不应该做任何事情)
  3. 或者,打开预启动,这将使一个服务器之间的差异下降,另一个接近零( heroku features:enable -a myapp preboot