diff --git a/src/components/SettingsContent/ProxyTab.astro b/src/components/SettingsContent/ProxyTab.astro
index 6dda0b3..e4caf17 100644
--- a/src/components/SettingsContent/ProxyTab.astro
+++ b/src/components/SettingsContent/ProxyTab.astro
@@ -29,6 +29,11 @@ const transportsList = [
{ name: "Libcurl", value: "/libcurl/index.mjs" },
{ name: "Bare", value: "/baremod/index.mjs" },
];
+
+const wispURLList = [
+ { name: "Alu (US)", value: "wss://aluu.xyz/wisp/" },
+ { name: "Nebula (US)", value: "wss://nebulaproxy.io/wisp/" }
+];
---
@@ -45,8 +50,8 @@ const transportsList = [
-
-
+
+
diff --git a/src/components/ts/WispServerTiming.ts b/src/components/ts/WispServerTiming.ts
new file mode 100644
index 0000000..ca67bfc
--- /dev/null
+++ b/src/components/ts/WispServerTiming.ts
@@ -0,0 +1,49 @@
+export async function testWispServers(servers: WispServer[]): Promise {
+ let wispData: WispData[] = [];
+
+ for (const server of servers) {
+ let start = performance.now();
+
+ try {
+ await new Promise((resolve, reject) => {
+ let socket = new WebSocket(server.url);
+
+ socket.onopen = () => {
+ let end = performance.now();
+ console.log(`Connected to ${server.url} in ${end - start}ms`);
+ let data = {
+ server: server,
+ time: end - start
+ };
+ wispData.push(data);
+ socket.close();
+ resolve(null);
+ };
+
+ socket.onerror = (error) => {
+ reject(error);
+ };
+ });
+ } catch (error) {
+ console.error(`Failed to connect to ${server.url}`, error);
+ }
+ }
+
+ if (wispData.length === servers.length) {
+ return wispData;
+ } else {
+ throw new Error('Failed to connect to all servers');
+ }
+}
+
+
+window.wispData = await testWispServers([
+ {
+ url: 'wss://aluu.xyz/wisp/'
+ },
+ {
+ url: 'wss://nebulaproxy.io/wisp/'
+ },
+])
+
+console.log(window.wispData);
\ No newline at end of file
diff --git a/src/pages/[lang]/index.astro b/src/pages/[lang]/index.astro
index adfd071..c7d0fc4 100644
--- a/src/pages/[lang]/index.astro
+++ b/src/pages/[lang]/index.astro
@@ -60,6 +60,7 @@ export function getStaticPaths() {
+