nodejs net socket在重负载时开始丢弃连接

时间:2015-01-11 20:30:39

标签: node.js sockets observers

我正在使用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);

如何调试问题?是否有任何类型的代码(我的)可能导致这样的事情?

1 个答案:

答案 0 :(得分:-1)

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