node.js - 由于服务器自动分配IP,客户端不断添加到套接字

标签 node.js sockets

我的代码有问题,我只有 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/

相关文章:

node.js - Node-ssh不是构造函数吗?我该如何解决这个问题?

c - node-gyp未定义引用问题

python - 在没有端口转发的情况下连接到已知的外部 ip 和内部 ip

javascript - Javascript 中的 UDP,用于本地主机上的进程间通信

sockets - 是什么原因导致 : java.net.SocketException : Connection timed out, 不是 SocketTimeoutException

java - Java Solaris NIO OP_CONNECT问题

javascript - node.js 应用程序中的系统托盘图标

node.js - 窗口对象不存在但仍然存在于 NodeJS 中

node.js - 如何测试 node.js 中是否抛出特定异常并点击

Linux/Unix Socket自连接