Backend: - ws.rs: Fikset WS auth via query-param (browser kan ikke sende headers ved WS upgrade) - auth.rs: Gjort decoding_key pub for gjenbruk i ws-modulen Frontend: - pg-ws.svelte.ts: Ny PG WebSocket-klient med auto-reconnect og event-logging - index.ts: Eksporterer pgWsConnect/pgWsDisconnect/pgWsState - +layout.svelte: Kobler til PG WS i parallell med STDB for verifisering Docs: - api_grensesnitt.md: Dokumentert /ws endepunkt og sanntidsarkitektur - tasks.md: Merket 22.1 som ferdig Deploy: Krever restart av maskinrommet + rebuild av frontend.
34 lines
932 B
Svelte
34 lines
932 B
Svelte
<script lang="ts">
|
|
import '../app.css';
|
|
import { page } from '$app/stores';
|
|
import { stdb, pgWsConnect, pgWsDisconnect } from '$lib/spacetime';
|
|
import { browser } from '$app/environment';
|
|
import SystemAnnouncements from '$lib/components/SystemAnnouncements.svelte';
|
|
|
|
let { children } = $props();
|
|
|
|
// Connect to SpacetimeDB when authenticated and in browser
|
|
$effect(() => {
|
|
if (browser && $page.data.session?.user) {
|
|
stdb.connect();
|
|
}
|
|
return () => {
|
|
if (browser) stdb.disconnect();
|
|
};
|
|
});
|
|
|
|
// Connect PG WebSocket in parallel for verification (Fase M1, oppgave 22.1)
|
|
$effect(() => {
|
|
const session = $page.data.session as Record<string, unknown> | undefined;
|
|
const accessToken = session?.accessToken as string | undefined;
|
|
if (browser && accessToken) {
|
|
pgWsConnect(accessToken);
|
|
}
|
|
return () => {
|
|
if (browser) pgWsDisconnect();
|
|
};
|
|
});
|
|
</script>
|
|
|
|
<SystemAnnouncements />
|
|
{@render children()}
|