You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.1 KiB
38 lines
1.1 KiB
import { Server, Origins } from "boardgame.io/server";
|
|
import { AcrossTheHex } from "./src/game.js";
|
|
import { fileURLToPath } from "url";
|
|
import dotenv from "dotenv";
|
|
import * as fs from "fs/promises";
|
|
import type * as _ from "@fastify/middie";
|
|
|
|
export async function startServer() {
|
|
const server = Server({
|
|
games: [AcrossTheHex],
|
|
origins: [Origins.LOCALHOST],
|
|
});
|
|
|
|
const env = dotenv.parse(await fs.readFile(new URL(".env", import.meta.url)).catch(() => ""));
|
|
server.run({
|
|
port: +(env["SOCKETIO_PORT"] ?? 3100),
|
|
lobbyConfig: {
|
|
apiPort: +(env["LOBBY_PORT"] ?? 3200),
|
|
}
|
|
});
|
|
}
|
|
|
|
export async function registerFastify(app: import("fastify").FastifyInstance, prefix: string) {
|
|
const { default: fastifyStatic } = await import("@fastify/static");
|
|
app.register(fastifyStatic, {
|
|
root: fileURLToPath(new URL(`./dist/client`, import.meta.url)),
|
|
prefix: prefix,
|
|
decorateReply: false,
|
|
});
|
|
|
|
// @ts-ignore
|
|
const handler = (await import(`./dist/server/entry.mjs`)).handler;
|
|
|
|
app.use(handler);
|
|
|
|
startServer();
|
|
}
|