move measurePing as a util

This commit is contained in:
SrGooglo 2025-03-26 15:32:03 +00:00
parent 3a75a8bb11
commit f051b73e9d
2 changed files with 63 additions and 62 deletions

View File

@ -1,62 +0,0 @@
import request from "../request"
const fetchers = {
http: () => new Promise(async (resolve) => {
const start = Date.now()
const failTimeout = setTimeout(() => {
resolve("timeout")
}, 5000)
request({
method: "GET",
url: "/ping",
})
.then(() => {
clearTimeout(failTimeout)
resolve(Date.now() - start)
})
.catch((err) => {
console.log(err)
clearTimeout(failTimeout)
resolve("failed")
})
}),
ws: () => new Promise((resolve) => {
const start = Date.now()
const failTimeout = setTimeout(() => {
resolve("failed")
}, 5000)
globalThis.__comty_shared_state.sockets["main"].on("pong", () => {
failTimeout && clearTimeout(failTimeout)
resolve(Date.now() - start)
})
globalThis.__comty_shared_state.sockets["main"].emit("ping")
})
}
export default async ({ select } = {}) => {
let selectedPromises = []
if (Array.isArray(select)) {
select.forEach((item) => {
if (!fetchers[item]) {
return
}
selectedPromises.push(fetchers[item]())
})
} else {
selectedPromises = [
fetchers["http"](),
fetchers["ws"](),
]
}
const result = await Promise.all(selectedPromises)
return result
}

63
src/utils/measurePing.js Executable file
View File

@ -0,0 +1,63 @@
import request from "../request"
const fetchers = {
http: () =>
new Promise(async (resolve) => {
const start = Date.now()
const failTimeout = setTimeout(() => {
resolve("timeout")
}, 5000)
request({
method: "GET",
url: "/ping",
})
.then(() => {
clearTimeout(failTimeout)
resolve(Date.now() - start)
})
.catch((err) => {
console.log(err)
clearTimeout(failTimeout)
resolve("failed")
})
}),
ws: () =>
new Promise((resolve) => {
const start = Date.now()
const failTimeout = setTimeout(() => {
resolve("failed")
}, 5000)
globalThis.__comty_shared_state.ws.sockets
.get("main")
.once("pong", () => {
failTimeout && clearTimeout(failTimeout)
resolve(Date.now() - start)
})
globalThis.__comty_shared_state.ws.sockets.get("main").emit("ping")
}),
}
export default async ({ select } = {}) => {
let selectedPromises = []
if (Array.isArray(select)) {
select.forEach((item) => {
if (!fetchers[item]) {
return
}
selectedPromises.push(fetchers[item]())
})
} else {
selectedPromises = [fetchers["http"](), fetchers["ws"]()]
}
const result = await Promise.all(selectedPromises)
return result
}