Files
snatchgame/server/src/index.ts

43 lines
1.2 KiB
TypeScript

import { Server } from "colyseus";
import { createServer } from "http";
import express from "express";
import cors from "cors";
import { monitor } from "@colyseus/monitor";
import { GameRoom } from "./rooms/GameRoom";
import { LobbyRoom } from "./rooms/LobbyRoom";
import { adminRouter } from "./adminApi";
const port = Number(process.env.PORT) || 3000;
const app = express();
app.use(cors());
app.use(express.json({ limit: '50mb' }));
app.use(express.urlencoded({ limit: '50mb', extended: true }));
const server = createServer(app);
const gameServer = new Server({
server,
});
gameServer.define("lobby", LobbyRoom)
.filterBy(["maxClients"]);
gameServer.define("game", GameRoom)
.filterBy(["maxClients"])
.enableRealtimeListing();
app.use("/api", adminRouter);
app.use("/colyseus", monitor());
app.get("/health", (req, res) => {
res.json({ status: "healthy", uptime: process.uptime() });
});
gameServer.listen(port);
console.log(`🎮 Snatch Game Server is running on port ${port}`);
console.log(`📊 Monitor: http://localhost:${port}/colyseus`);
console.log(`🌐 WebSocket: ws://localhost:${port}`);
console.log(`🔧 Admin API: http://localhost:${port}/api`);