|
/// <reference path="./index.d.ts" />
|
|
|
|
import express from 'express';
|
|
import path from 'path';
|
|
import http from 'http';
|
|
import socketio from 'socket.io';
|
|
import randomstring from "randomstring";
|
|
// import routes from './routes';
|
|
import { chooseCartella, choseAllCartelle, createRoom, extractNumber, joinRoom, pleaseGiveMeCartelle, startGame, unchooseCartella, updatePlayers } from './routines/rooms';
|
|
import cartelle from './cartelle';
|
|
import {
|
|
stripIndents
|
|
} from "common-tags";
|
|
import ip from "ip";
|
|
|
|
import { config } from "dotenv";
|
|
import { join } from 'path';
|
|
config({
|
|
path: join(__dirname, "..", ".env")
|
|
});
|
|
|
|
const app = express();
|
|
|
|
app.use(express.json());
|
|
app.use(express.urlencoded());
|
|
app.use(express.static(path.join(__dirname, '..', 'build')));
|
|
// app.use(routes);
|
|
|
|
// 404 route
|
|
app.get("*", (req, res) => res.sendFile(path.join(__dirname, '..', 'build', 'index.html')));
|
|
|
|
const server = http.createServer(app);
|
|
const io = new socketio.Server(server, {
|
|
cors: {
|
|
origin: "http://localhost:8080",
|
|
methods: ["GET", "POST"]
|
|
}
|
|
});
|
|
|
|
io.on("connection", (socket: socketio.Socket) => {
|
|
const ID = randomstring.generate();
|
|
socket.emit("ID", ID)
|
|
console.log("client connected:", ID);
|
|
socket.on("disconnect", () => console.log(`client disconnected: ${ID}`));
|
|
socket.on("createRoom", createRoom.bind(null, socket, ID));
|
|
socket.on("joinRoom", joinRoom.bind(null, socket, ID));
|
|
socket.on("playersUpdate", updatePlayers.bind(null, socket, ID));
|
|
socket.on("extractNumber", extractNumber.bind(null, socket, ID));
|
|
socket.on("chooseCartella", chooseCartella.bind(null, socket, ID));
|
|
socket.on("unchooseCartella", unchooseCartella.bind(null, socket, ID));
|
|
socket.on("startGame", startGame.bind(null, socket, ID));
|
|
socket.on("choseAllCartelle", choseAllCartelle.bind(null, socket, ID));
|
|
socket.on("pleaseGiveMeCartelle", pleaseGiveMeCartelle.bind(null, socket, ID));
|
|
socket.on("giveAllCartelle", () => {
|
|
socket.emit("giveAllCartelle", cartelle);
|
|
});
|
|
})
|
|
|
|
const PORT = process.env.PORT || 8080;
|
|
server.listen(PORT, () => {
|
|
console.log(stripIndents`
|
|
Listening on port ${PORT}.
|
|
|
|
Localhost server: http://localhost:${PORT}
|
|
Local net server: https://${ip.address()}:${PORT}
|
|
Configured domain: ${process.env.DOMAIN}
|
|
`)
|
|
});
|