Validering av fase 22 (SpacetimeDB-migrering) bekrefter:
1. WebSocket-sanntid fungerer:
- maskinrommet lytter på PG NOTIFY-kanaler (node_changed, edge_changed,
access_changed, mixer_channel_changed)
- Enrichment av events med fulle rader fra PG
- Broadcast via tokio::broadcast til WebSocket-klienter
- Tilgangskontroll filtrerer events per bruker
- Frontend kobler til /ws med JWT, mottar initial_sync + inkrementelle events
2. PG LISTEN/NOTIFY-triggere verifisert i database:
- 4 notify-funksjoner: notify_node_change, notify_edge_change,
notify_access_change, notify_mixer_channel_change
- 4 triggere: nodes_notify, edges_notify, node_access_notify,
mixer_channels_notify
3. Ingen STDB-rester i aktiv kode/konfig:
- maskinrommet/src/: rent
- Cargo.toml: ingen spacetimedb-avhengigheter
- docker-compose.yml: ingen spacetimedb-tjeneste
- Caddyfile: ingen spacetimedb-proxy
- Eneste funn: frontend/src/lib/spacetime/ katalognavn —
omdøpt til frontend/src/lib/realtime/ (32 filer oppdatert)
- Historiske referanser i docs/arkiv og scripts/synops.md er OK
24 lines
698 B
Svelte
24 lines
698 B
Svelte
<script lang="ts">
|
|
import '../app.css';
|
|
import { page } from '$app/stores';
|
|
import { wsConnect, wsDisconnect } from '$lib/realtime';
|
|
import { browser } from '$app/environment';
|
|
import SystemAnnouncements from '$lib/components/SystemAnnouncements.svelte';
|
|
|
|
let { children } = $props();
|
|
|
|
// Koble til portvokterens WebSocket når autentisert og i browser
|
|
$effect(() => {
|
|
const session = $page.data.session as Record<string, unknown> | undefined;
|
|
const accessToken = session?.accessToken as string | undefined;
|
|
if (browser && accessToken) {
|
|
wsConnect(accessToken);
|
|
}
|
|
return () => {
|
|
if (browser) wsDisconnect();
|
|
};
|
|
});
|
|
</script>
|
|
|
|
<SystemAnnouncements />
|
|
{@render children()}
|