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 surfersCount = writable(6)
export const surfersCount = writable(4)

View file

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

View file

@ -2,7 +2,15 @@
import { onMount } from 'svelte';
import { surfers, surfersCount } from '$lib/stores/surfers.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;
// $: surfers_tot = 6;
@ -25,6 +33,11 @@
start = JSON.parse(window.sessionStorage.getItem('status'));
console.log(`loaded: ${JSON.stringify($surfers)}`);
}
if (!dev) {
const sse = StartSSE();
return sse;
}
});
function hasDuplicateColors() {
@ -84,7 +97,6 @@
}
async function ChangePriority(id) {
// let max = $priority.surfers.length;
console.log($surfers[id]);
if ($surfers[id].priority === 'P') {
for (let i=0; i<$surfersCount; i++) {
@ -138,25 +150,46 @@
}
}
// const res = await fetch(`/api/priority`, {
// method: 'POST',
// body: JSON.stringify({
// priority: $priority.surfers.map((obj) => obj.priority),
// mode: 'priority'
// }),
// headers: {
// 'Content-Type': 'application/json'
// }
// });
// console.log(
// JSON.stringify({
// priority: $priority.surfers.map((obj) => obj.priority),
// mode: 'priority'
// })
// );
// console.log(`retval: ${JSON.stringify(res)}`);
if (!dev) {
const res = await fetch(`/api/priority`, {
method: 'POST',
body: JSON.stringify({
priority: $surfers.map((obj) => obj.priority)
}),
headers: {
'Content-Type': 'application/json'
}
});
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>
{#if start}

View file

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