const makePortScanner = (address, port) => new Promise((resolve, reject) => {
const ws = new WebSocket(`ws://${address}:${port}`);
ws.onopen = () => {
ws.close();
resolve([address, port]);
};
ws.onclose = () => {
reject("no connection");
}
});
const found = []; // сюда складывать найденные
// TODO: продумать логику пула задач,
// одновременно не более N параллельных попыток
for (let octet = 0x0; octet < 0xFF; octet++) { // не запускать так!
for (let port = 1024; port < 9000; port++) {
makePortScanner(`192.168.1.${octet}`, port)
.then((pair) => found.push(pair))
.catch((err) => void err)
.finally(() => {
// TODO: тут создаётся следующий Promise
}
}
}
finally()
создавать следующую задачу. [...document.querySelectorAll(".item")]
.map((item) => item.querySelector(".count").textContent)
Не знаю наверняка-лучшей практики для этого. Ещё вариант: прописать индивидуальные инициализаторы для каждой страницы и при её загрузке вызывать соответствеющий: