Клиенты с несколькими сокетами - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь создать несколько клиентов 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);
            });
    });
});
    }

используйте, если я оставлю только один клиент в массиве - все в порядке.

1 Ответ

0 голосов
/ 28 сентября 2018

Я вижу две проблемы с вашим кодом.

  1. В ключах объектов JSON не в порядке вставки.Таким образом, вы не можете утверждать, какой из них подключен первым или вторым, поскольку нет порядка.
  2. То, что вы делаете, использует одну и ту же переменную socket для всех ваших сокетов.Таким образом, есть вероятность, что во второй итерации объект socket обновляется, а предыдущий - сборщик мусора.Что вы можете сделать, это создать массив объектов сокетов:

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

  3. Теперь вы можете прикреплять события, такие как socket[index].on(data,function(){})

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...