workers-rs/test/tests/websocket.spec.ts
2025-09-16 16:48:46 -07:00

37 lines
912 B
TypeScript

import { describe, expect, test } from "vitest";
import { MessageEvent } from "miniflare";
import { mf, mfUrl } from "./mf";
describe("websocket", () => {
test("to echo", async () => {
const resp = await mf.dispatchFetch(`${mfUrl}websocket`, {
headers: {
upgrade: "websocket",
},
});
expect(resp.webSocket).not.toBeNull();
const socket = resp.webSocket!;
socket.accept();
let cnt = 0;
socket.addEventListener("message", function (_event: MessageEvent) {
cnt++;
});
let calledClose = false;
socket.addEventListener("close", function (_event: CloseEvent) {
calledClose = true;
});
socket.send("Hello, world!");
await new Promise((resolve) => setTimeout(resolve, 500));
expect(cnt).toBe(1);
socket.close();
await new Promise(resolve => setTimeout(resolve, 1000));
expect(calledClose).toBe(true);
});
});