当前位置: 首页 > 知识库问答 >
问题:

Node.js net服务器没有接收到某些客户端断开连接

党航
2023-03-14

我有一个Node.js net socket服务器运行,它在连接到它的客户端数量很少的情况下工作得很好。但是,当我将客户机连接的数量增加到200个时,所有的初始连接都会正确地建立和通信,但是当我按Ctrl-C关闭客户机程序时,服务器上只接收到一些断开的连接(通过错误:read ECONNRESET message)。

我正在监听事件:关闭、超时、断开、错误和结束。我还检查数据事件是否收到长度为0的数据,但这种情况从未触发。

服务器和客户端在运行时不接收异常或错误;两者都是node.js。

netstat-i显示客户端上的所有连接都已终止

lsof-i显示服务器上仍建立的许多连接

还有人碰到过这个吗?

共有1个答案

庾勇军
2023-03-14

您应该考虑合并某种特殊的ping/keepalive消息,客户机和服务器定期发送该消息,以便更准确/快速地检查两端的死套接字。

 类似资料:
  • 我正在用Java编写一个简单的TCP客户机/服务器程序对,如果客户机在10秒内还没有发送任何东西,服务器必须断开连接。socket.setsoTimeout()使我得到了这一点,服务器就可以很好地断开连接。问题是--我如何让客户端确定服务器是否关闭?目前,我使用DataOutputStream向服务器写入数据,这里的一些答案表明,向封闭套接字写入数据将引发IOException,但这不会发生。 编

  • 我有一个示例Spring启动应用程序来运行图形QL服务器,具有作为客户端,我的pom有以下依赖项: 当我尝试从客户端连接时,出现以下错误: 狩猎决议好心建议。 我还有几个问题: 我应该使用SimpleGraphQLHttpServlet将请求路由到endpoint吗 我正在React UI上使用apollo client,那么它是强制使用apollo server还是spring boot可以工作

  • 我正在开发一个与许多客户端连接的服务器。我需要知道客户端何时与服务器断开连接。因此,每个客户端都向服务器发送一个特定的字符。如果两秒钟后没有收到字符,那么我应该断开服务器与客户端的连接(释放为此客户端分配的资源)。 这是我的服务器的主要代码: 第一个问题是,我用来识别在线客户端的方式(每秒发送特定消息)是否是一种好方法? 如果它是好的,我如何使用检测与女巫客户端相关,然后如何断开密钥与服务器的连接

  • 我正在编写自己的TFTP客户端。客户端是用c(部分为c)编写的,并在unix系统(Linux Debian稳定版)上运行。 这是我的问题: 我可以将我的读取请求(RRQ)发送到TFTP服务器(Windows XP上的打开TFTP服务器)。TFTP服务器接收RRQ,但无法发送答案。 在服务器端,我看到以下消息:Client 192.168.1.110:55239 C:\OpenTFTPServer\

  • 下面是我的服务器代码: 下面是我的客户端活动代码: 以下是客户端活动的xml布局文件: 因此,我开始认为这不是连接端口的问题,而是应用程序的android客户端的问题。但我想不出有什么问题。 顺便说一下,当我试图发送消息时,运行客户端的手机和运行服务器的笔记本电脑都连接到了同一个网络。

  • 我正在制作满足以下条件的Netty服务器: null 在我的情况下,既没有发生“通道不活动”事件,也没有发生“连接被对等方重置”异常。 这是我使用的Netty测试客户端代码的部分。 如何在要回复时注意到断开连接?