Files
qt5-legatus-legacy/Lts/Services/WarehouseGuez/ws-tab-test.ts
T
2026-08-13 18:33:10 +02:00

57 lines
1.4 KiB
TypeScript
Executable File

#!/usr/bin/env -S deno run -A --watch
// get deno here: https://github.com/denoland/deno/releases and extract to /usr/local/bin ;)
async function handle(conn: Deno.Conn)
{
const httpConn = Deno.serveHttp(conn);
for await (const requestEvent of httpConn)
{
await requestEvent.respondWith(handleReq(requestEvent.request));
}
}
function handleReq(req: Request): Response
{
const upgrade = req.headers.get("upgrade") || "";
if (upgrade.toLowerCase() != "websocket")
{
return new Response("request isn't trying to upgrade to websocket.");
}
const { socket, response } = Deno.upgradeWebSocket(req);
socket.onopen = () =>
{
console.log("socket opened");
let interval = setInterval(() =>
{
console.log("sending bite data..");
try
{
socket.send('{"type": "biteData", "data": {"equipNo": 123}}');
}
catch(e)
{
clearInterval(interval);
console.log("cleared");
}
}
, 1000);
}
socket.onmessage = (e) =>
{
console.log("socket message:", e.data);
socket.send(new Date().toString());
};
socket.onerror = (e) => console.log("socket errored:");//, e);
socket.onclose = () => console.log("socket closed");
return response;
}
const server = Deno.listen({ port: 8080 });
for await (const conn of server)
{
handle(conn);
}