added SSE

This commit is contained in:
Miki 2024-01-10 12:16:41 +01:00
parent 84ef5dd5d6
commit c690a90c32
4 changed files with 61 additions and 20 deletions

View file

@ -26,4 +26,4 @@ function createSurfers() {
export const surfers = createSurfers() export const surfers = createSurfers()
export const surfersCount = writable(6) export const surfersCount = writable(4)

View file

@ -1,3 +1,7 @@
<script>
</script>
<ul> <ul>
<li> <li>
<div class="priority" id="n">2</div> <div class="priority" id="n">2</div>

View file

@ -2,7 +2,15 @@
import { onMount } from 'svelte'; import { onMount } from 'svelte';
import { surfers, surfersCount } from '$lib/stores/surfers.js'; import { surfers, surfersCount } from '$lib/stores/surfers.js';
import { colors } from '$lib/stores/colors.js'; import { colors } from '$lib/stores/colors.js';
import Button from '$lib/button.svelte'; import { dev } from '$app/environment';
if (dev) {
console.log('Dev mode');
} else {
console.log('Not dev mode');
}
const events = ['priority'];
$: start = false; $: start = false;
// $: surfers_tot = 6; // $: surfers_tot = 6;
@ -25,6 +33,11 @@
start = JSON.parse(window.sessionStorage.getItem('status')); start = JSON.parse(window.sessionStorage.getItem('status'));
console.log(`loaded: ${JSON.stringify($surfers)}`); console.log(`loaded: ${JSON.stringify($surfers)}`);
} }
if (!dev) {
const sse = StartSSE();
return sse;
}
}); });
function hasDuplicateColors() { function hasDuplicateColors() {
@ -84,7 +97,6 @@
} }
async function ChangePriority(id) { async function ChangePriority(id) {
// let max = $priority.surfers.length;
console.log($surfers[id]); console.log($surfers[id]);
if ($surfers[id].priority === 'P') { if ($surfers[id].priority === 'P') {
for (let i=0; i<$surfersCount; i++) { for (let i=0; i<$surfersCount; i++) {
@ -138,25 +150,46 @@
} }
} }
// const res = await fetch(`/api/priority`, { if (!dev) {
// method: 'POST', const res = await fetch(`/api/priority`, {
// body: JSON.stringify({ method: 'POST',
// priority: $priority.surfers.map((obj) => obj.priority), body: JSON.stringify({
// mode: 'priority' priority: $surfers.map((obj) => obj.priority)
// }), }),
// headers: { headers: {
// 'Content-Type': 'application/json' 'Content-Type': 'application/json'
// } }
// }); });
// console.log( console.log(`retval: ${JSON.stringify(res)}`);
// JSON.stringify({ }
// priority: $priority.surfers.map((obj) => obj.priority),
// mode: 'priority'
// })
// );
// console.log(`retval: ${JSON.stringify(res)}`);
} }
function StartSSE() {
let url = '/api/sse?';
for (let e in events) {
url += `event=${events[e]}&`;
}
console.log(`sse url: ${url}`);
const sse = new EventSource(url);
console.log(`subscribe: ${sse}`);
sse.onopen = () => {
console.log(`sse open ${now()}`);
};
sse.addEventListener('priority', (e) => {
let Msg = JSON.parse(e.data);
console.log(JSON.stringify(Msg));
});
return () => {
sse.close();
console.log(`sse closing ${Date.now()}`);
};
}
</script> </script>
{#if start} {#if start}

View file

@ -1,3 +1,7 @@
<script>
</script>
<div class="wall"> <div class="wall">
<div class="column"> <div class="column">
<div class="priority" id="n">2</div> <div class="priority" id="n">2</div>