我正在使用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);
如何调试问题?是否有任何类型的代码(我的)可能导致这样的事情?
答案 0 :(得分:-1)
原来是因为我在写东西之前没有检查过可写套接字,因为我在onError处理程序中关闭了连接。 所以发生的事情是:socket.write(..)触发错误,因为套接字不可写(虽然已连接)并且出错时我关闭套接字,所以客户端开始重新连接,这循环3-7次,直到发送没有异常。