最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

只要远程主机关闭套接字连接,Node.js应用就会崩溃

运维笔记admin200浏览0评论

只要远程主机关闭套接字连接,Node.js应用就会崩溃

只要远程主机关闭套接字连接,Node.js应用就会崩溃

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

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发出了错误事件。

发布评论

评论列表(0)

  1. 暂无评论