每当远程主机关闭套接字连接时,Node.js应用程序崩溃

亚尼克·罗雄(Yanick Rochon)

这是服务器套接字的源代码:

const server = net.createServer(client => {
   // 'connection' listener.
   let processing = false;

   client.setTimeout(config.socket.timeout);
   client.on('data', data => {
      const batches = data.toString().split(',');

      if (!processing && batches && batches.length) {
         processing = true;

         processBatch(batches, error => {
            const status = error ? 'ERR' : 'SUCC';

            logger.verbose('... Ended with status : ' + status);

            client.write(status, () => client.end());
         });
      }
   });
   client.on('timeout', () => {
     logger.warn('Client socket did time out');
     client.end();
   });

   //client.on('end', () => {});
});
server.on('error', error => {
   logger.info('Socket error');
   logger.error('Error: ', error);
});
server.listen(config.socket.port, () => {
   console.log('*** Socket listening on port', config.socket.port);
});

客户端将进行连接,发送数据,然后远程关闭连接,这将触发服务器错误处理程序,并记录以下消息:

Error: This socket has been ended by the other party
    at Socket.writeAfterFIN [as write] (net.js:441:14)
    at file:///home/thermo/bwkl/src/service.js:191:20
    at file:///home/thermo/bwkl/src/service.js:123:13 {
 code: 'EPIPE'
}

当远程主机过早终止连接时,如何防止这种情况并优雅地关闭客户端套接字?

安东库

server因为错误事件被发出错误处理程序不赶连接错误client

您应该为实例error上的事件定义一个侦听器client,以便处理所涉及的错误:

client.on('error', (err) => {
  console.log('Connection error:', err.message);
});

这将防止Node.js进程崩溃。您可以在侦听器中根据需要处理错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单击应用程序图标时,应用程序崩溃

来自分类Dev

防止Node TypeError崩溃的应用程序

来自分类Dev

防止Node TypeError崩溃的应用程序

来自分类Dev

应用程序在启动时崩溃

来自分类Dev

暂停时Android应用程序崩溃

来自分类Dev

播放视频时应用程序崩溃

来自分类Dev

PFFile太大时,应用程序崩溃

来自分类Dev

更新时列出崩溃应用程序

来自分类Dev

单击按钮时应用程序崩溃

来自分类Dev

JavaFx应用程序在退出时崩溃

来自分类Dev

使用SherlockFragmentActivity时应用程序崩溃

来自分类Dev

应用程序在视图添加时崩溃

来自分类Dev

使用startActivityForResult时应用程序崩溃

来自分类Dev

C ++应用程序在删除时崩溃

来自分类Dev

滑动时应用程序崩溃

来自分类Dev

PFFile太大时,应用程序崩溃

来自分类Dev

添加ImageView时崩溃的应用程序

来自分类Dev

调用BroadcastReceiver时,应用程序崩溃

来自分类Dev

暂停时Android应用程序崩溃

来自分类Dev

Checkbuttons 在选中时使应用程序崩溃

来自分类Dev

应用程序在空时崩溃

来自分类Dev

应用程序在 getWritableDatabase 时崩溃:NullPointerException

来自分类Dev

使用 Intent 时应用程序崩溃

来自分类Dev

onclick 时应用程序崩溃

来自分类Dev

传递 Intent 时应用程序崩溃

来自分类Dev

Node.js应用程序崩溃了Heroku-错误无法连接到本地主机:27017

来自分类Dev

尝试使用它下载大型文件时,Node.js应用程序崩溃

来自分类Dev

每当我注销时应用程序崩溃

来自分类Dev

Heroku Node.js / mongoose和mLab应用程序崩溃并超时