mirror of
https://github.com/oven-sh/bun
synced 2026-02-10 02:48:50 +00:00
56 lines
1.5 KiB
JavaScript
56 lines
1.5 KiB
JavaScript
import websocket from "@fastify/websocket";
|
|
import { expect, test } from "bun:test";
|
|
import Fastify from "fastify";
|
|
|
|
test("websocket", async () => {
|
|
const fastify = Fastify({
|
|
logger: false,
|
|
});
|
|
try {
|
|
// Websocket
|
|
fastify.register(websocket, {
|
|
options: {
|
|
server: fastify.server,
|
|
},
|
|
});
|
|
|
|
// Health check routes
|
|
fastify.get("/health", async () => ({ status: "ok" }));
|
|
fastify.get("/healthz", async () => ({ status: "ok" }));
|
|
const { promise, resolve } = Promise.withResolvers();
|
|
let serverMessage = "";
|
|
async function start() {
|
|
try {
|
|
fastify.register(instance => {
|
|
instance.get("/websocket", { websocket: true }, (connection, request) => {
|
|
connection.on("message", message => {
|
|
serverMessage = message?.toString();
|
|
connection.send("Hello, client!");
|
|
});
|
|
});
|
|
});
|
|
const address = await fastify.listen({ port: 0, host: "0.0.0.0" });
|
|
|
|
console.info(`API listening on ${address}`);
|
|
|
|
const ws = new WebSocket(`${address}/websocket`);
|
|
ws.onopen = () => {
|
|
ws.send("Hello, server!");
|
|
};
|
|
ws.onmessage = event => {
|
|
resolve(event.data);
|
|
};
|
|
} catch (err) {
|
|
console.error(err);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
start();
|
|
const message = await promise;
|
|
expect(message).toBe("Hello, client!");
|
|
expect(serverMessage).toBe("Hello, server!");
|
|
} finally {
|
|
fastify.close();
|
|
}
|
|
});
|