diff options
| author | Adam Soltys <[email protected]> | 2022-10-31 11:14:26 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2022-10-31 11:14:26 -0700 |
| commit | 6d02123bd8a2ffb0cb67f15ee8e8bf2397e6362b (patch) | |
| tree | 9f3261e9e063b7a0cf5cc0249aef57ccd90458db /src/routes/+layout.svelte | |
| parent | 175d8c396f36a0d04f43cad5abd738bc9ffdbe58 (diff) | |
| download | coinos-ui-6d02123bd8a2ffb0cb67f15ee8e8bf2397e6362b.tar.gz coinos-ui-6d02123bd8a2ffb0cb67f15ee8e8bf2397e6362b.zip | |
keep socket connection alive
Diffstat (limited to 'src/routes/+layout.svelte')
| -rw-r--r-- | src/routes/+layout.svelte | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 5cc75b30..1cdf2a69 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,9 +1,9 @@ <script> import { SvelteToast } from '@zerodevx/svelte-toast'; import '../app.css'; - import { onMount } from 'svelte'; - import { connect } from '$lib/socket'; - import { selectedRate, rate, user } from '$lib/store'; + import { onDestroy, onMount } from 'svelte'; + import { connect, send } from '$lib/socket'; + import { last, selectedRate, rate, user } from '$lib/store'; import { page } from '$app/stores'; import { browser } from '$app/environment'; import { goto } from '$app/navigation'; @@ -33,13 +33,31 @@ locale.subscribe((lng) => { if (lng) localStorage.setItem(localeLocalStorageKey, lng); }); + + browser && count(); }); $: browser && connect(token); + + let lost, timer; + let count = () => { + lost = (Date.now() - $last) > 10000 + if (lost) connect(token); + send('heartbeat'); + timer = setTimeout(count, 5000); + }; + + onDestroy(() => browser && clearTimeout(timer)); </script> <SvelteToast options={{ reversed: true, intro: { y: 192 } }} /> +{#if lost} +<div class="fixed bottom-12 right-12 text-red-600 bg-white z-50 px-4 py-2 rounded-full border"> + Lost connection to server, try refreshing +</div> +{/if} + <main data-sveltekit-prefetch> <slot /> </main> |
