我的代码有问题,我只有 3 个从套接字服务器 (node.js) 连接的客户端(设备)。每次我的客户端断开连接和连接时,我的客户端数组长度都会增加,最多需要 50 个客户端或更多。我尝试将“结束”发射器放在“数据”外部,但它仍然不断添加客户端。我不知道我的代码出了什么问题。
我希望有人能在这方面帮助我。
var net = require('net');
var clients = [];
var server = net.createServer(function(socket){
socket.name = socket.remoteAddress;
if(!checkArray(socket.name,clients)){
clients.push(socket);
}else{
console.log("client exist");
}
socket.on('data',function(data){
var revdata = data.toString();
// doSomething(revdata);
socket.on('end', function () {
var indexremove = clients.indexOf(socket);
if (indexremove > -1) {
clients.splice(indexremove, 1);
console.log("clients are"+ clients.length);
}
});
});
});
function checkArray(value, array) {
return array.indexOf(value) > -1;
}
server.listen(3020,'127.0.0.1', function () {
console.log("server is up!");
});
最佳答案
这可能与您第一次调用 checkArray
时出现的错误有关。当您应该使用 socket
本身时,您错误地使用 socket.name
作为第一个参数。更具体地说,对于检查客户端是否已连接的逻辑,请尝试以下操作:
if(!checkArray(socket,clients)){
clients.push(socket);
}else{
console.log("client exist");
}
关于node.js - 由于服务器自动分配IP,客户端不断添加到套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30180447/