Node.js nodejs网络套接字在重载时开始断开连接

Node.js nodejs网络套接字在重载时开始断开连接,node.js,sockets,observers,Node.js,Sockets,Observers,我正在使用net.createServer(主机、端口)+flash套接字客户端。 当我的游戏运行数小时并达到高负载时,服务器开始断开连接。 客户端收到“已连接”事件,然后立即收到“关闭”事件。 它像这样循环3-4-5-6次并连接。 服务器负载不重。有大量的RAM和CPU资源 我的代码如下所示: var net = require("net"); server = net.createServer(function(socket) { socket.setTim

我正在使用net.createServer(主机、端口)+flash套接字客户端。 当我的游戏运行数小时并达到高负载时,服务器开始断开连接。 客户端收到“已连接”事件,然后立即收到“关闭”事件。 它像这样循环3-4-5-6次并连接。 服务器负载不重。有大量的RAM和CPU资源

我的代码如下所示:

var net = require("net"); 
server = net.createServer(function(socket) {
                socket.setTimeout(15000);
                socket.setKeepAlive(true);
                //used to store string socket data untill packet delimiter is received
                socket.myBuffer = ""; //(and then process the JSON message)

                socket.on("data", onData); 
                socket.on("error", onError);            
                socket.on("end", onClientDisconnect);
                socket.on("timeout", onClientDisconnect); 
});  
server.listen(port);

如何调试该问题?有没有任何类型的代码(我的)会导致这样的事情?

结果是,我在写东西之前没有检查可写套接字,因为我关闭了OneError处理程序中的连接。
所以发生的情况是:socket.write(..)触发错误,因为套接字不可写(虽然已连接),在出现错误时,我关闭套接字,因此客户端开始重新连接,并循环3-7次,直到发送无异常为止。

在写入之前,您无需检查可写性,但您确实需要检查写入的结果,但这意味着我必须从OneError处理程序中删除连接关闭代码,这将导致连接的客户端阵列中挂起套接字。