当服务器重启时,当大量tcp连接尝试从node.js javascript客户端到服务器时,会挂起一些连接尝试。我写了一个简单的脚本来重现它:
var net = require('net');
function Conn() {
var conn = new net.Socket({allowHalfOpen: false});
conn.setTimeout(1000);
conn.on('error', function (connectionException) {
console.log('TCP Repeater error: ' + connectionException);
this.connected = false;
});
conn.on('connect', function () {
console.log("connected");
this.connected = true;
});
conn.on('close', function () {
console.log("connection closed");
this.connected = false;
});
conn.on('timeout', function () {
console.log("connection timeout");
this.connected = false;
});
conn.connect(9997, "localhost");
}
for (var i=0;i<400;i++) {
new Conn();
}
针对启动的tcp服务器运行此脚本。一些尝试在服务器启动时出现错误,一些尝试在服务器启动后连接。然而,一些尝试不会触发任何事件而只是悬挂。
无论如何,我可以杀死那些悬挂的尝试吗?它看起来连接超时因为已建立的连接不活动而无法获得帮助。有没有办法像java中的setSoTimeout一样设置连接超时?
由于