44 lines
1.5 KiB
JavaScript
44 lines
1.5 KiB
JavaScript
const servers = [
|
|
'fra-1.2v2.io',
|
|
'usa-1.2v2.io'
|
|
];
|
|
|
|
function getRandomServer() {
|
|
return servers[Math.floor(Math.random() * servers.length)];
|
|
}
|
|
|
|
async function fetchBestRegion() {
|
|
const maxAttempts = 3;
|
|
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
const randomServer = getRandomServer();
|
|
try {
|
|
const response = await fetch(`https://${randomServer}/api/init`);
|
|
if (response.ok) {
|
|
const data = await response.json();
|
|
const bestRegion = data.region; // use the "region" from the response JSON
|
|
console.log(`Attempt ${attempt}: Best region from server ${randomServer}: ${bestRegion}`);
|
|
return bestRegion;
|
|
} else {
|
|
console.error(`Attempt ${attempt}: Server ${randomServer} responded with status: ${response.status}`);
|
|
}
|
|
} catch (error) {
|
|
console.error(`Attempt ${attempt}: Error fetching best region from ${randomServer}:`, error);
|
|
}
|
|
}
|
|
console.error('All attempts failed. Falling back to default: USA');
|
|
return 'USA';
|
|
}
|
|
|
|
const cachedBestServer = localStorage.getItem('bestServer');
|
|
|
|
if (!cachedBestServer) {
|
|
fetchBestRegion().then(bestRegion => {
|
|
console.log('Best region to connect (Saving to localStorage):', bestRegion);
|
|
localStorage.setItem('bestServer', bestRegion);
|
|
}).catch(error => {
|
|
console.error('Error during region fetching:', error);
|
|
});
|
|
} else {
|
|
console.log('Using cached best server:', cachedBestServer);
|
|
}
|