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)
async function zipper() {
const ports = [ "1", "2", "3" ];
const urls = [ "q", "w", "e", "r", "t", "y" ];
for (let i = 0; i < urlsLength; i++) {
const combo = urls[i] + ports[i % ports.length];
await getSomePromise(combo);
}
}