Compare commits

..

2 Commits

Author SHA1 Message Date
f8723a55c4 Merge pull request 'update: head ping' (#1) from new-ping into main
Some checks failed
Docker Build and Push / build-and-push (push) Has been cancelled
Reviewed-on: bagas/tunnl_please_frontend#1
2025-12-02 11:22:34 +00:00
fdc17992fa update: head ping 2025-12-02 18:22:02 +07:00

View File

@@ -42,34 +42,6 @@ const fetchServers = async (): Promise<Server[]> => {
await new Promise((resolve) => setTimeout(resolve, 2000)) await new Promise((resolve) => setTimeout(resolve, 2000))
const mockServers: Server[] = [ const mockServers: Server[] = [
{
id: "us",
name: "United States",
location: "Chicago",
subdomain: "us.tunnl.live",
coordinates: [-87.6298, 41.8781],
ping: null,
status: "online",
pingStatus: "idle",
capabilities: {
http: true,
tcp: false,
},
},
{
id: "eu",
name: "Europe",
location: "Frankfurt",
subdomain: "eu.tunnl.live",
coordinates: [8.6821, 50.1109],
ping: null,
status: "online",
pingStatus: "idle",
capabilities: {
http: true,
tcp: false,
},
},
{ {
id: "sgp", id: "sgp",
name: "Singapore", name: "Singapore",
@@ -90,28 +62,7 @@ const fetchServers = async (): Promise<Server[]> => {
blockedPorts: [22, 80, 443, 3306, 5432, 6379, 2200], blockedPorts: [22, 80, 443, 3306, 5432, 6379, 2200],
supportsAutoAssign: true, supportsAutoAssign: true,
}, },
}, }
{
id: "id",
name: "Indonesia",
location: "Bogor",
subdomain: "id.tunnl.live",
coordinates: [106.8456, -6.595],
ping: null,
status: "online",
pingStatus: "idle",
capabilities: {
http: true,
tcp: true,
},
portRestrictions: {
allowedRanges: [
{ min: 10000, max: 50000 },
],
blockedPorts: [22, 80, 443, 3306, 5432, 6379, 2200],
supportsAutoAssign: true,
},
},
] ]
return mockServers.filter((server) => server.status === "online") return mockServers.filter((server) => server.status === "online")
@@ -125,76 +76,58 @@ const testServerPing = (
const timeout = 5000 const timeout = 5000
let resolved = false let resolved = false
const pingUrl = `wss://ping.${server.subdomain}` const pingUrl = `http://ping.${server.subdomain}`
try { const timeoutId = setTimeout(() => {
const ws = new WebSocket(pingUrl) if (!resolved) {
resolved = true
const timeoutId = setTimeout(() => { resolve({
if (!resolved) { server,
resolved = true ping: null,
ws.close() status: "timeout",
resolve({ })
server,
ping: null,
status: "timeout",
})
}
}, timeout)
ws.onopen = () => {
console.log(`Connected to ${pingUrl}`)
} }
}, timeout)
ws.onmessage = (event) => { fetch(pingUrl, {
if (event.data === "pong" && !resolved) { method: "HEAD",
resolved = true cache: "no-cache",
const ping = Date.now() - startTime })
clearTimeout(timeoutId) .then((res) => {
ws.close() if (resolved) return
resolve({ resolved = true
server, clearTimeout(timeoutId)
ping,
status: "success",
})
}
}
ws.onclose = (event) => {
if (!resolved) {
resolved = true
clearTimeout(timeoutId)
if (!res.ok) {
resolve({ resolve({
server, server,
ping: null, ping: null,
status: "failed", status: "failed",
}) })
return
} }
}
ws.onerror = (error) => { const ping = Date.now() - startTime
if (!resolved) {
resolved = true
clearTimeout(timeoutId)
console.error(`WebSocket error for ${pingUrl}:`, error)
resolve({ resolve({
server, server,
ping: null, ping,
status: "failed", status: "success",
}) })
} })
} .catch((err) => {
} catch (error) { if (resolved) return
console.error(`Failed to create WebSocket for ${pingUrl}:`, error) resolved = true
resolve({ clearTimeout(timeoutId)
server,
ping: null, console.error(`HEAD ping error for ${pingUrl}:`, err)
status: "failed", resolve({
server,
ping: null,
status: "failed",
})
}) })
}
}) })
} }