import fastify, {EventMessage, FastifyInstance} from "fastify"; import {FastifySSEPlugin} from "../src"; import {AddressInfo} from "net"; import EventSource from "eventsource"; export async function getFastifyServer(source: AsyncIterable<EventMessage>): Promise<FastifyInstance> { const server = fastify(); server.register(FastifySSEPlugin); server.get("/", function (req, res) { res.header("x-test-header2", "test2"); res.sse(source); }); await server.ready(); await new Promise<void>((resolve, reject) => { server.listen(0, "127.0.0.1", (err) => { if(err) { return reject(err); } resolve(); }); }); return server; } export function getBaseUrl(fastifyInstance: FastifyInstance): string { const address = fastifyInstance.server.address() as AddressInfo; return `http://${address.address}:${address.port}`; } export function getEventSource(server: FastifyInstance, path = "/"): EventSource { return new EventSource(`${getBaseUrl(server)}${path}`); }