Refactor server stuff

This commit is contained in:
Schluffe
2026-09-18 11:41:18 +02:00
parent f062753f8f
commit 1c6f2368a1
9 changed files with 169 additions and 120 deletions
+46
View File
@@ -0,0 +1,46 @@
import { startServer } from "./server.ts";
export const hostname = "0.0.0.0";
export const port = 8042;
export const href = `ws://${hostname}:${port}`;
export function setup(
fn: (ctx: Deno.TestContext) => Promise<void>,
handler: Deno.ServeHandler,
): (ctx: Deno.TestContext) => Promise<void> {
return async (ctx) => {
const shutdown = startServer(handler, hostname, port);
try {
await fn(ctx);
} finally {
await shutdown();
}
};
}
export function connect(url: string): Promise<[WebSocket, string[]]> {
return new Promise((resolve, reject) => {
const messages: string[] = [];
const socket = new WebSocket(url);
socket.onopen = () => resolve([socket, messages]);
socket.onerror = (error) => reject(error);
socket.onmessage = ({ data }) => {
messages.push(data);
};
});
}
export function close(socket: WebSocket): Promise<void> {
return new Promise((resolve) => {
if (socket.readyState === WebSocket.CLOSED) {
return resolve();
}
socket.onclose = () => resolve();
socket.close();
});
}
export function flush(): Promise<void> {
return new Promise((resolve) => setTimeout(resolve, 0));
}