mirror of
https://github.com/hydralauncher/hydra.git
synced 2025-02-09 03:37:45 +03:00
feat(webTorrentHealth): update recursive function with a loop
This commit is contained in:
parent
7a2b693397
commit
539f444ab5
@ -1,4 +1,4 @@
|
|||||||
import WebTorrentHealth from "webtorrent-health";
|
import webTorrentHealth from "webtorrent-health";
|
||||||
|
|
||||||
type WebTorrentHealthData = {
|
type WebTorrentHealthData = {
|
||||||
seeds: number;
|
seeds: number;
|
||||||
@ -6,27 +6,26 @@ type WebTorrentHealthData = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const webTorrentData = {
|
export const webTorrentData = {
|
||||||
async getSeedersAndPeers(magnet: string, retry = 0, timeout = 1500) {
|
async getSeedersAndPeers(
|
||||||
return new Promise((resolve, reject) => {
|
magnet: string
|
||||||
WebTorrentHealth(
|
): Promise<{ seeders: number; peers: number }> {
|
||||||
magnet,
|
let peers = 0;
|
||||||
{ timeout },
|
let seeds = 0;
|
||||||
(err: Error, data: WebTorrentHealthData) => {
|
let retry = 0;
|
||||||
if (err) {
|
|
||||||
return reject(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
const { peers, seeds } = data;
|
while (retry < 3 && (!peers || !seeds)) {
|
||||||
|
try {
|
||||||
|
const data: WebTorrentHealthData = await webTorrentHealth(magnet, {
|
||||||
|
timeout: 1500 * (retry + 1),
|
||||||
|
});
|
||||||
|
|
||||||
if ((!peers || !seeds) && retry < 3) {
|
peers = data.peers;
|
||||||
return resolve(
|
seeds = data.seeds;
|
||||||
webTorrentData.getSeedersAndPeers(magnet, retry + 1, timeout * 2)
|
} catch (e) {
|
||||||
);
|
retry++;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return resolve({ peers, seeders: seeds });
|
return { peers, seeders: seeds };
|
||||||
}
|
|
||||||
);
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user