Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在什么情况下websocket会停止从缓冲区读取_Websocket - Fatal编程技术网

在什么情况下websocket会停止从缓冲区读取

在什么情况下websocket会停止从缓冲区读取,websocket,Websocket,我有一个websocket服务器。它接受来自客户端的数千个连接。从客户端读取数据并向客户端写入数据。它将正常工作数周。但偶尔会发生一些错误,可能两周一次。在很短的时间内,新客户机将与服务器建立连接,并立即发送协议。将调用服务器端websocket.onOpen(),但它无法从客户端读取协议数据。稍后,客户端可能会关闭连接。但在服务器端,连接将保持在CLOSE\u WAIT状态,但从未成功关闭。通过netstat,我可以看到CLOSE\u WAITconnections的读取缓冲区不是空的,并保留

我有一个websocket服务器。它接受来自客户端的数千个连接。从客户端读取数据并向客户端写入数据。它将正常工作数周。但偶尔会发生一些错误,可能两周一次。在很短的时间内,新客户机将与服务器建立连接,并立即发送协议。将调用服务器端websocket.onOpen(),但它无法从客户端读取协议数据。稍后,客户端可能会关闭连接。但在服务器端,连接将保持在
CLOSE\u WAIT
状态,但从未成功关闭。通过netstat,我可以看到
CLOSE\u WAIT
connections的读取缓冲区不是空的,并保留该值(从不读取)。因此,我猜想服务器无法读取数据,而close
FIN
包导致连接保持在
close\u WAIT
状态


所以我想知道在什么情况下websocket可能无法从读取缓冲区读取数据

在我看来,这可能是服务器的反应器循环出现故障。。。您仍然可以从同一服务器获取网页(以了解是否仅限于websocket连接)?谢谢!这是一个tomcat游戏服务器。我们在端口7000上有一个连接器,用于ws://。端口443上的另一个连接器,用于wss://。这两个连接器可能具有不同数量的客户端。当客户端无法与7000 ws:///通信时,我使用netstat查看端口7000上大约有7000多个CLOSE\u WAIT连接,端口443上大约有80多个CLOSE\u WAIT连接。在很短的时间内,443(wss)工作正常。但端口7000关闭等待数量持续增长。当总连接数达到10200(小时硬限制)时。wss://也无法工作(打开太多文件),您可能应该将此作为一个答案发布。似乎其他人会觉得这很有帮助。