update: head ping #1

Merged
bagas merged 1 commits from new-ping into main 2025-12-02 11:22:34 +00:00
Showing only changes of commit fdc17992fa - Show all commits

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,15 +76,11 @@ 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 ws = new WebSocket(pingUrl)
const timeoutId = setTimeout(() => { const timeoutId = setTimeout(() => {
if (!resolved) { if (!resolved) {
resolved = true resolved = true
ws.close()
resolve({ resolve({
server, server,
ping: null, ping: null,
@@ -142,59 +89,45 @@ const testServerPing = (
} }
}, timeout) }, timeout)
ws.onopen = () => { fetch(pingUrl, {
console.log(`Connected to ${pingUrl}`) method: "HEAD",
cache: "no-cache",
})
.then((res) => {
if (resolved) return
resolved = true
clearTimeout(timeoutId)
if (!res.ok) {
resolve({
server,
ping: null,
status: "failed",
})
return
} }
ws.onmessage = (event) => {
if (event.data === "pong" && !resolved) {
resolved = true
const ping = Date.now() - startTime const ping = Date.now() - startTime
clearTimeout(timeoutId)
ws.close()
resolve({ resolve({
server, server,
ping, ping,
status: "success", status: "success",
}) })
} })
} .catch((err) => {
if (resolved) return
ws.onclose = (event) => {
if (!resolved) {
resolved = true resolved = true
clearTimeout(timeoutId) clearTimeout(timeoutId)
console.error(`HEAD ping error for ${pingUrl}:`, err)
resolve({ resolve({
server, server,
ping: null, ping: null,
status: "failed", status: "failed",
}) })
}
}
ws.onerror = (error) => {
if (!resolved) {
resolved = true
clearTimeout(timeoutId)
console.error(`WebSocket error for ${pingUrl}:`, error)
resolve({
server,
ping: null,
status: "failed",
}) })
}
}
} catch (error) {
console.error(`Failed to create WebSocket for ${pingUrl}:`, error)
resolve({
server,
ping: null,
status: "failed",
})
}
}) })
} }