From 4eeb9ddcefdecf9a8742ded31b1b0d5cab2a7e3c Mon Sep 17 00:00:00 2001 From: Xevion Date: Mon, 23 Dec 2024 12:43:59 -0600 Subject: [PATCH] clientside websocket connect, increase volume --- frontend/src/components/StatefulDemo.tsx | 33 +++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/frontend/src/components/StatefulDemo.tsx b/frontend/src/components/StatefulDemo.tsx index 7e7990e..6c17c2d 100644 --- a/frontend/src/components/StatefulDemo.tsx +++ b/frontend/src/components/StatefulDemo.tsx @@ -2,6 +2,7 @@ import Badge from "@/components/Badge"; import Emboldened from "@/components/Emboldened"; import { cn, plural, type ClassValue } from "@/util"; import { useRef, useState } from "preact/hooks"; +import { useEffect } from "preact/hooks"; type StatefulDemoProps = { class?: ClassValue; @@ -13,6 +14,36 @@ type SessionData = { }; const StatefulDemo = ({ class: className }: StatefulDemoProps) => { + useEffect(() => { + const socket = new WebSocket( + (window.location.protocol === "https:" ? "wss://" : "ws://") + + window.location.host + + "/ws" + ); + + socket.onmessage = (event) => { + const data = JSON.parse(event.data); + + if (data.type == undefined) + throw new Error("Received message without type"); + + switch (data.type) { + case "session": + setSession(data.session); + break; + default: + console.warn("Received unknown message type", data.type); + } + }; + + socket.onclose = () => { + console.log("WebSocket connection closed"); + }; + + return () => { + socket.close(); + }; + }, []); const randomBits = (bits: number) => Math.floor(Math.random() * 2 ** bits) .toString(16) @@ -70,7 +101,7 @@ const StatefulDemo = ({ class: className }: StatefulDemoProps) => { onClick={function onClick() { highlight(i); const audio = new Audio("/notify.wav"); - audio.volume = 0.3; + audio.volume = 0.5; audio.play(); }} >