Node.js 在nodejs退出时未调用ws.onclose事件

Node.js 在nodejs退出时未调用ws.onclose事件,node.js,websocket,Node.js,Websocket,我使用web套接字,当服务器关闭时,onclose方法不会触发triggert。 我试图用progress.exit手动关闭ws-connections,但这似乎只能在干净的出口上触发triggert 它们是捕获停止的nodejs应用程序并在停止前执行代码的一种方法吗? 它应在ctr+c和任何其他碰撞/退出时触发 基本上,我想在客户尝试做某件事之前告诉他什么时候连接不再存在,因为onclose不会处理每个案例,我该如何检查连接 我提出的唯一解决方案是不时ping服务器。由于这不可能,我开始将pi

我使用web套接字,当服务器关闭时,onclose方法不会触发triggert。 我试图用progress.exit手动关闭ws-connections,但这似乎只能在干净的出口上触发triggert

它们是捕获停止的nodejs应用程序并在停止前执行代码的一种方法吗? 它应在ctr+c和任何其他碰撞/退出时触发

基本上,我想在客户尝试做某件事之前告诉他什么时候连接不再存在,因为onclose不会处理每个案例,我该如何检查连接


我提出的唯一解决方案是不时ping服务器。

由于这不可能,我开始将ping作为工作区发送:

var pingAnswer = true;
pingInterval = setInterval(function(){
  if(pingAnswer){
    ws.send(JSON.stringify({type:'ping'})); //on the serverside i just send a ping back everytime i recive one.
    pingAnswer = false;
  }else{
     clearInterval(pingInterval);
    //reload page or something
  }
},1000);
ws.onMessage(function(e){
  m = JSON.parse(e.data);
  switch(m.type){
  ....
  case 'ping':
     pingAnswer=true;
  return; 
  }
}

);

您没有提供一个片段来显示如何在“关闭”上定义您的,。。。处理程序,但可能是定义的处理程序不正确

在撰写本文时,的文档使我首先将处理程序实现为ws_connection.onclose=>{…};,但是我已经找到了正确的方法来进行ws_连接

也许ws文档中使用的样式是我不熟悉的某种习惯用法


我已经用node 6.2.1和ws 1.1.1对此进行了测试。打开“关闭”按钮,。。。当相应的一方通过Ctrl+c关闭或由于任何原因(例如,为了测试,JSON.parsefail)崩溃时,服务器/客户端的任何一方都会触发回调;或抛出新错误

有一个清理限制是正常的,尽管并不总是想要的。否则,服务器可能会陷入无休止的清理循环。因此,您应该期望服务器的onclose方法不总是被调用。至于进程退出清理,考虑使用进程。在“退出”,函数{};如上所述。