Files
traque/traque-back/index.js
2024-06-10 15:24:37 +00:00

56 lines
1.4 KiB
JavaScript

import { createServer } from "https";
import express from "express";
import { Server } from "socket.io";
import Game from "./game.js";
import { config } from "dotenv";
import { readFileSync } from "fs";
import { initAdminSocketHandler, secureAdminBroadcast } from "./admin_socket.js";
import { initTeamSocket, playersBroadcast } from "./team_socket.js";
import { PenaltyController } from "./penalty_controller.js";
import { initPhotoUpload } from "./photo.js";
//extract admin password from .env file
config();
const HOST = process.env.HOST;
const PORT = process.env.PORT;
export const app = express()
const httpsServer = createServer({
key: readFileSync(process.env.SSL_KEY, 'utf-8'),
cert: readFileSync(process.env.SSL_CERT, 'utf-8')
}, app);
httpsServer.listen(PORT, HOST, () => {
console.log(`Server running`);
});
//set cors to allow all origins
export const io = new Server(httpsServer, {
cors: {
origin: "*",
methods: ["GET", "POST"]
}
});
//Zone update broadcast function, called by the game object
function onUpdateNewZone(newZone) {
playersBroadcast("new_zone", newZone)
secureAdminBroadcast("new_zone", newZone)
}
function onUpdateZone(zone) {
playersBroadcast("zone", zone)
secureAdminBroadcast("zone", zone)
}
export const game = new Game(onUpdateZone, onUpdateNewZone);
export const penaltyController = new PenaltyController();
initAdminSocketHandler();
initTeamSocket();
initPhotoUpload();