level-up/backend/trpc/index.ts
2025-04-12 15:30:37 +02:00

29 lines
No EOL
814 B
TypeScript

import { t } from "./base"
import { playerRouter } from "./player"
import { crewRouter } from "./crew"
import { game } from "../game"
import { on } from "node:events"
export const appRouter = t.router({
player: playerRouter,
director: crewRouter,
join: t.procedure
.subscription(async function*({ signal, ctx }) {
signal!.addEventListener("abort", () => {
game.removePlayer(ctx.sessionId)
})
const iterable = on(game.eventBus, "player-broadcast", { signal })
for (const broadcast of game.getConnectionPlayerBroadcasts()) {
yield broadcast
}
for await (const broadcast of iterable) {
yield broadcast
}
}),
})
export type AppRouter = typeof appRouter