Files
swyxweb/frontend/src/config.ts
T
SvenandClaude Opus 5 521ceb044b Loopback als Vorgabe, verständliche Meldung bei Mixed Content
Die feste Adresse 192.168.180.135 der SwyxTray-App wird überall durch
127.0.0.1 ersetzt: Die App läuft auf dem Arbeitsplatz des Anwenders, die
Verbindung bleibt damit auf dem Rechner und braucht keine Firewall-Freigabe.

Scheitert der Verbindungsaufbau, weil eine über HTTPS ausgelieferte Seite
kein unverschlüsseltes ws:// öffnen darf, meldet der Browser nur "The
operation is insecure." – describeConnectFailure() benennt stattdessen den
Grund und den Ausweg (wss:// oder Loopback).

node_modules/ wird nun auf jeder Ebene ignoriert, nicht nur unter frontend/.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-24 17:16:41 +02:00

31 lines
1.0 KiB
TypeScript

/** Fallback-Adresse des WebSocket-Servers, falls weder .env noch /api/config etwas liefern. */
export const DEFAULT_WS_HOST = '127.0.0.1'
export const DEFAULT_WS_PORT = 17654
export const DEFAULT_WS_PATH = '/ws'
export const DEFAULT_WS_URL =
import.meta.env.VITE_WS_URL ?? `ws://${DEFAULT_WS_HOST}:${DEFAULT_WS_PORT}${DEFAULT_WS_PATH}`
export interface ClientConfig {
websocketUrl: string
host: string
port: number
path: string
}
/**
* Holt die WebSocket-Adresse vom Backend. Schlägt der Aufruf fehl (Backend nicht
* erreichbar, rein statisches Hosting), bleibt es beim Default aus der .env.
*/
export async function fetchClientConfig(signal?: AbortSignal): Promise<string> {
const response = await fetch('/api/config', { signal })
if (!response.ok) {
throw new Error(`/api/config antwortete mit HTTP ${response.status}`)
}
const config = (await response.json()) as Partial<ClientConfig>
if (!config.websocketUrl) {
throw new Error('/api/config lieferte keine websocketUrl')
}
return config.websocketUrl
}