Async Socket Issue - PullRequest
       6

Async Socket Issue

0 голосов
/ 04 октября 2018

Я пытаюсь прочитать некоторые адреса серверов и связанные адреса портов из файла json в электронном приложении и пытаюсь создать сокет-соединение для проверки, может ли приложение подключиться к этим серверам с соответствующими адресами портов.но всякий раз, когда я запускаю приложение, во-первых, запускается сообщение о том, что все серверы запущены, во-вторых, запускаются правильные выходные данные, в-третьих, неправильные и т. д. В конце я думаю, что существует ситуация с асинхронным методом сокета в синхронизации для следующего цикла, но это не удаетсявыяснить, как я могу это исправить.Я попытался создать массив сокетов, но это также не удалось.Может кто-нибудь посоветовать мне способ преодоления этой ситуации?

for(i=0; i < jsondata.length; i++){
const li = document.createElement('li');
const itemText = document.createTextNode(jsondata[i]['server'] + ':' + jsondata[i]['port']);
li.appendChild(itemText);
ul.appendChild(li);

let serverAddress = jsondata[i]['server'];
let portNumber = jsondata[i]['port'];

const socket = new net.createConnection(portNumber, serverAddress);
socket.on('connect', ()=>{
    console.log(serverAddress + ' connected');
    socket.end();
});
socket.on('error', (err)=>{
    console.log(serverAddress + ' failed');
    li.style.textDecoration = 'line-through';
    socket.end();
});        

}

1 Ответ

0 голосов
/ 04 октября 2018

нашел решение, создал массив для каждого сокета, и он работает.код выглядит следующим образом:

var sockets = [];
for(i=0; i < jsondata.length; i++){
const li = document.createElement('li');
const itemText = document.createTextNode(jsondata[i]['server'] + ':' + jsondata[i]['port']);
li.appendChild(itemText);
ul.appendChild(li);

let serverAddress = jsondata[i]['server'];
let portNumber = jsondata[i]['port'];

sockets[i] = new net.createConnection(portNumber, serverAddress);
sockets[i].on('connect', ()=>{
    console.log(serverAddress + ' connected');
    sockets[i].end();
});
sockets[i].on('error', (err)=>{
    console.log(serverAddress + ' failed');
    li.style.textDecoration = 'line-through';
    sockets[i].end();
});
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...