javascript - 多个套接字客户端

标签 javascript sockets connection

我尝试创建socket.io的多个客户端,每个客户端连接到不同的服务器,但到目前为止,第二个服务器被拒绝连接,第一个服务器被断开连接,我想是因为当我在数组中只留下一个客户端时没问题。

与两个客户端的消息

Uncaught Error: connect ECONNREFUSED 127.0.0.1:10002

function connections() {
    var data = {
    "clients": [{
        "10000": "127.0.0.1",
    },
{
        "10002": "127.0.0.1",
    }]
};

data.clients.forEach(function(client_port, index) {
    console.log(client_port + index);
    Object.keys(client_port).forEach(function(client_ip) {    
        console.log(client_ip + " = " + client_port[client_ip]);
        var port = client_ip;
        var ip = client_port[client_ip];
        socket = net.connect(port, ip, function () {
            socket.on('data', function (data) {
                var dataHex = data.toString('hex');
                var dataString = data.toString('utf8');
                util.log('get data:' + dataString);
                $('response').value += dataString;
                arrayparadox = dataString.split(' ');
                console.log(arrayparadox[1]);
            });
                util.log('connected to server ' + client_ip + ':' + client_port);
            });
    });
});
    }

如果我在数组中只留下一个客户端,则使用 everythink is okai。

最佳答案

我发现您的代码有两个问题。

  1. 在 JSON 对象中,键不按插入顺序排列。因此,由于没有顺序,您无法声明哪一个是第一个或第二个连接的。

  2. 您正在做的是对所有套接字使用相同的变量socket。因此,在第二次迭代中,socket 对象很可能会被更新,而前一个迭代会被垃圾收集。您可以做的是创建套接字对象数组:

    socket[index++] = net.connect();

  3. 现在您可以附加诸如 socket[index].on(data,function(){})

    的事件

关于javascript - 多个套接字客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52505254/

相关文章:

C 套接字编程 : connect() hangs

javascript - 鼠标退出时违反内容安全策略

c# - 使用 c# 从 Panasonic PBX 捕获数据

php - 使用 cURL 或 socket_create 发送自定义 HTTP POST 请求

C 套接字接收 : connection reset by peer

javascript - 使用 Node.js 编辑 mysql 中的现有行

http - 长时间运行的 http 连接永远不会得到响应

javascript - Chrome 因这个 JS 而崩溃

javascript - 如果它包含使用 JavaScript 的特定单词,如何关闭浏览器的选项卡?

javascript - 在 JavaScript 中使用 for in 循环从对象中获取值