BEfunnuga/AI-Coding-Discussion-Simulator
0
1<!DOCTYPE html>2<html lang="en">3<head>4 <meta charset="UTF-8">5 <meta name="viewport" content="width=device-width, initial-scale=1.0">6 <title>Black Forest Labs - Load Balanced Streamlit</title>7 <style>8 html, body {9 margin: 0;10 padding: 0;11 width: 100%;12 height: 100%;13 }14 #loading {15 position: fixed;16 top: 0;17 left: 0;18 width: 100%;19 height: 100%;20 background: rgba(255, 255, 255, 0.8);21 display: flex;22 justify-content: center;23 align-items: center;24 font-size: 24px;25 z-index: 1000;26 }27 iframe {28 width: 100%;29 height: 100vh;30 border: none;31 }32 </style>33</head>34<body>35 <div id="loading">Please wait Memilih server optimal...</div>36 <iframe id="streamlit-frame"></iframe>37 38 <script>39 const SERVERS = [40 "https://ai-coding-discussion-simulator-nopuaru7izex9imhkqbahb.streamlit.app/?embed=true",41 "https://ai-coding-discussion-simulator-nopuaru7izex9imhkqbahb.streamlit.app/?embed=true"42 ];43 44 // Fungsi untuk mengecek kecepatan respons server45 async function checkServerSpeed(url) {46 const start = performance.now();47 try {48 const response = await fetch(url, { method: 'HEAD', mode: 'no-cors' });49 const end = performance.now();50 return end - start;51 } catch (error) {52 console.error(`Error checking ${url}:`, error);53 return Infinity;54 }55 }56 57 // Fungsi untuk memilih server berdasarkan kecepatan respons58 async function chooseServer() {59 const speeds = await Promise.all(SERVERS.map(checkServerSpeed));60 const fastestIndex = speeds.indexOf(Math.min(...speeds));61 return SERVERS[fastestIndex];62 }63 64 // Fungsi untuk memuat Streamlit65 async function loadStreamlit() {66 const loadingElement = document.getElementById('loading');67 const iframe = document.getElementById('streamlit-frame');68 69 // Cek apakah sudah ada URL yang tersimpan di sessionStorage70 let chosenUrl = sessionStorage.getItem('streamlitUrl');71 72 if (!chosenUrl) {73 // Jika belum ada, pilih server dan simpan ke sessionStorage74 chosenUrl = await chooseServer();75 sessionStorage.setItem('streamlitUrl', chosenUrl);76 }77 78 // Tampilkan iframe dan sembunyikan loading79 iframe.src = chosenUrl;80 iframe.onload = () => {81 loadingElement.style.display = 'none';82 };83 }84 85 // Jalankan loadStreamlit saat halaman dimuat86 window.onload = loadStreamlit;87 </script>88</body>89</html>